Я строю свое первое приложение с Kohana и использую в нем базовую систему шаблонов. В моих шаблонах я хочу повторить переменные для различного содержимого страницы, но только тогда, когда каждый переменная установлена, и я хочу, чтобы сохранить код в шаблонах как можно короче, так что-то вроде этого:php тернарная стенография для использования в шаблоне
<?=$foo?>
отлично работает, если переменная установлена, но если я не получаю уведомление. Так я думал, что тройная оператор будет делать трюк красиво:
<?=$foo?:''?>
в соответствии с PHP инструкции, с 5.3 это нормально, чтобы оставить из средней части и выше, не должен вывести ничего, если переменная не установлена, но Я все еще получаю уведомление об ошибке. «Обратите внимание: неопределенная переменная: Foo в /»
я могу получить желаемый результат с небольшим изменением, чтобы подавить уведомление:
<[email protected]$foo?:''?>
, но я знаю, что это вообще не страдает практиковать и хотели бы, если возможно, лучшее решение, в то время как st плохо соблюдая код в файлах шаблонов.
следующие работы, но это не так, кратким (в основном потому, что мои фактические переменные могут быть довольно длинными):
<?=isset($foo)?$foo:'';?>
я упускаю что-то или делать что-то не так?
ОК, я думаю, что я неправильно понял следующее: «С PHP 5.3 можно исключить среднюю часть тернарного оператора. Expression expr1?: Expr3 возвращает expr1, если expr1 имеет значение TRUE и expr3 в противном случае. " Я использую чистые php в своих шаблонах, поэтому я предполагаю, что в этом случае самым чистым вариантом является подавление ошибок. спасибо за ваш вклад. – arumdev
Чтобы избежать уведомлений, вам нужно использовать 'isset ($ var)?: $ Default', но это не вернет содержимое' $ var', а результат 'isset ($ var)', который является «истинным» - и это действительно не работает. 'isset ($ var)? $ var: $ default' необходим. – Sven