Всем привет. Всю голову сломал, помогите советом. Делаю генерацию XML файлов через gearman. В воркере есть функция которая циклом обходит названия шаблонов и вставляет их внутри функции. Проблема в том что шаблоны хоть и разные но функции у них одинаковые (т.е. названия функций одинаковые) PHP вываливает Fatal error при повторном require.
function regenirationXMLsFreeBoards($job){ //Запуск задачи
...
foreach($FreeBoards as $Board){ //Обходим бесплатные доски
if(!generationXMLFile($Board)) break;
}
...
}
function generationXMLFile($Board){
$dir = "../../xmls/";
$BoardName = $Board["name"];
$template = $dir."templates/".$BoardName.".php";
require $template;
createXML($fileXML); //Эта функция из шаблона $template
...
}
Т.е. первый цикл проходит успешно, на втором отваливаемся из за ошибки
PHP Fatal error: Cannot redeclare createXML()
Шаблонов может быть много, пока только два. Помогите советом, что можно предпринять. В голову пришло только создать отдельную функцию в расчете, что заново вызвав её потеряем предыдущий require. Только я вот забыл что require вставляется в скрипт при первом использовании и остается на все время жизни скрипта.
Если что то не понятно, спрашивайте, я объясню.
Во включаемых файлах вместо:
function createXML()
{
// ....
}
Делайте:
$createObjectXML = function () {
// что нужно
};
$createXML = function () use ($createObjectXML) {
$var = $createObjectXML();
// ...
};
Затем:
require $template;
$createXML($fileXML);
Так как это не функция, а переменная, конфликтов не будет.
Если нужно просто решить проблему, то вариант выше подойдет. Если же нужно чтобы было хорошо, то лучше будет поднять ставки в игре в абстракции, и завести отдельные именованные объекты с необходимыми методами под каждый отчет или что вы делаете. Всё равно эти классы и файлы будет редактировать программист.
Варианта три (но суть одна - добиться разных "full qualified" имен для функций)
Виртуальный выделенный сервер (VDS) становится отличным выбором
Из 1с получается выгрузить данний на сайт но обратно не знаю как правильно создать xml файл,Заказы
Есть простая форма поиска по цене(форма с input type="text"), вводим цену и она ищет все товары по вводной цене, нужно его реализовать c input type="checkbox"...
Если массив пустой выводиться сообщение "Ошибка в параметре, оно должно быть числом!"Если в массиве 'Слово' вновь выводится "Ошибка в параметре,...
Не понимаю, почему, если в отправке не указать путь к файлу, то будет ошибка 404?