PHP. Проверка на существование переменной.

231
17 декабря 2017, 11:06

Работая с opencart встретил такой кусок кода:

if($moneymaker2_footer_links_enabled){
     // Какое-то действие
}

При этом если переменная $moneymaker2_footer_links_enabled не объявлена, php выдает ошибку о том что данная переменная не найдена, для чего тогда нужна эта проверка если $moneymaker2_footer_links_enabled не предполагает true или false, т.е. я уверен что в этом куске кода идет проверка именно существования переменной, но при её отсутствии появляется ошибка.

Это какой-то старый способ проверки существования переменной, ведь isset с этим справляется?

Answer 1

В поисковике у вас не логи а уведомления о том что переменная не определена.

Переменная с таким названием не входит в набор стандартных для Opencart. Судя по уведомлению, данная переменная должна передаваться контроллером footer.php в представление footer.tpl, либо генерироваться прямо там. К сожалению, многие разработчики грешат тем, что работая с opencart (который mvc) частенько прячут часть логики в файлы представления (шаблоны с расширением .tpl).

Сам же файл footer.tpl, судя по тому же уведомлению, читается из кеша (system/storage/modification). Туда обычно сохраняются изменённые расширениями стандартные файлы шаблонов. Из этого можно предположить, что был какой-то экстеншн ocMod, который перезаписал файл шаблона футера, занося в него свои изменения. Судя по названию переменной, она отвечает за вывод блока ссылок, на соц.сети или ещё куда-нибудь.

Если таковое расширение использовалось вами и было отключено/удалено, то от него мог остаться кешированный файл шаблона футера - footer.tpl. В таком случае вам необходимо обновить кеши. Делается это из админки, меню "модификаторы" (кнопки в правом верхнем углу).

Если вы не уверены в происхождении переменной, просто дополните конструкцию if проверкой isset:

if(isset($moneymaker2_footer_links_enabled)){
    // Какое-то действие
}

Нужно понимать, что если расширение всё-таки установлено и активировано, любое стирание кешей будет приводить к перезаписи файла footer.tpl и исчезновению правок.

READ ALSO
Не могу розархивировать файл zip

Не могу розархивировать файл zip

Я принимаю файл zip в base64 в php скрипте, декодирую и записываю в файл, но после записи, архив не розархивируетсяНужна помощь

231
if (значения из бд == значения из массивов)

if (значения из бд == значения из массивов)

Добрый вечер! Подскажите как правильно написать код, суть в том мне нужно чтобы так работал: Пример - в базе данных значения:

204
Составления отчета из базы данных по нескольким таблицам

Составления отчета из базы данных по нескольким таблицам

Добрый день! Как составить отчет по нескольким таблицам? Все записи в таблицы заявки объединяются по году и недели в виде ссылкиНа другой...

196