Как Отловить "обычные" Phpшные Warning

Добрый вечер!

Как у начинающего ООПшника и Yiiшника :) у меня есть проблема - постоянно при использовании и передаче параметров по неосторожности\незнанию вместо например передачи $this->var использую просто $var. А потом пол часа смотрю код и не могу понять почему он работает не так как я хочу. ((( Я пробовал настраивать на Warning логгирование, ставить дебаггеры но не могу отловить такие вещи. Насколько я помню, при включенном реагировании на Warning на “сыром” ПХП мне появлялось предупреждение о том, что “переменная $var может быть неинициализирована”. И тогда я понимал что напортачил наверно либо просто при наборе переменной сделал опечатку. Как это вклюить в Yii? Заранее благодарен за ответ!

Это больше похоже на Notice а не на Warning… по идее вам надо включить ворнинги/нотисы средствами РНР (через php.ini или httaccess или в точке входа index.php)

Точно! Noticы это были. Yii не может показывать так же красиво как свои логи Нотисы?

Только что включил в ПХП отлавливать Notice. При первом же рефреше своего работающего сайта словил на весь экран (как Exception - приложение прервало работу) причем не своего компонента а RSuperfish:




PHP notice

Undefined index: class 

Z:\home\localhost\www\...\protected\extensions\superfish\RSuperfish.php(93)

...

092  function run(){

093     if($this->htmlOptions['class']) {

094       $this->htmlOptions['class'] .= " sf-menu";

095     } else {

096       $this->htmlOptions['class'] = " sf-menu";

097     }

...



Конкретизирую вопрос - можно чтоб Notice показывался внизу страницы со всеми другими трейсами, предупреждениями, а не ПРЕРЫВАЛ работу приложения (ато пока до своего глючного кода доберусь придется править кучу чужого ))))?..

Мне такой способ неизвестен :( в свое время много мучался

Может быть такой способ что-то может дать, по крайней мере стоит об этом почитать.




// specify how many levels of call stack should be shown in each log message

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);



Вспомнил, такой вопрос поднимался тут


// dont HALT on NOTICE

defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER',false);

Спасибо, помогло!