Всем привет. Всю голову сломал, помогите советом. Делаю генерацию 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" имен для функций)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Из 1с получается выгрузить данний на сайт но обратно не знаю как правильно создать xml файл,Заказы
Есть простая форма поиска по цене(форма с input type="text"), вводим цену и она ищет все товары по вводной цене, нужно его реализовать c input type="checkbox"...
Если массив пустой выводиться сообщение "Ошибка в параметре, оно должно быть числом!"Если в массиве 'Слово' вновь выводится "Ошибка в параметре,...
Не понимаю, почему, если в отправке не указать путь к файлу, то будет ошибка 404?