Удобная разработка и отладка в Yii
Yii предоставляет достаточно широкие возможности для удобной разработки и отладки. Покажем несколько полезных приёмов.
Включаем профайлер
Для того, чтобы посмотреть, какие запросы к БД происходят и сколько времени тратится
на каждый, можно включить встроенный SQL-профайлер. Делается это настройкой компонентов
db и log.
main.php:
'db'=>array( … // включаем профайлер 'enableProfiling'=>true, // показываем значения параметров 'enableParamLogging' => true, ), 'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( … array( // направляем результаты профайлинга в ProfileLogRoute (отображается // внизу страницы) 'class'=>'CProfileLogRoute', 'levels'=>'profile', 'enabled'=>true, ), ), ),
Показываем сообщения внизу страницы
Кроме сообщений профайлера, внизу страницы можно показать и все остальные отладочные сообщения:
'log' => array( 'class' => 'CLogRouter', 'routes' => array( array( 'class' => 'CWebLogRoute', 'categories' => 'application', 'levels'=>'error, warning, trace, profile, info', ), ), ),
Отдаём сообщения в FireBug
Плагин FireBug для FireFox очень удобен для отладки приложения. Чтобы вывести информацию в его консоль можно воспользоваться следующей конфигурацией:
'log' => array( 'class' => 'CLogRouter', 'routes' => array( array( 'class' => 'CWebLogRoute', 'categories' => 'application', 'showInFireBug' => true ), ), ),
Отсылка ошибок почтой
Если необходимо следить за возникновением ошибок, можно отправлять их себе на почту:
'log' => array( 'class' => 'CLogRouter', 'routes' => array( array( 'class' => 'CEmailLogRoute', 'categories' => 'error', 'emails' => array('sam@rmcreative.ru'), 'sentFrom' => 'error@yiiframework.ru', 'subject' => 'Error at YiiFramework.ru' ), ), ),
Отладка bizRule RBAC
Начиная с Yii 1.1.3 можно включить error_reporting для правил bizRule. Писать их придётся со всеми проверками на существование параметров, зато тихих ошибок больше не будет.
'authManager' => array( // показываем ошибки только в режиме отладки 'showErrors' => YII_DEBUG ),
Дампер для отладки кода
Для более удобного использования встроенного дампера можно использовать следующий компонент:
class VarDumper extends CVarDumper { /** * Displays a variable. * This method achieves the similar functionality as var_dump and print_r * but is more robust when handling complex objects such as Yii controllers. * @param mixed variable to be dumped * @param integer maximum depth that the dumper should go into the variable. Defaults to 10. * @param boolean whether the result should be syntax-highlighted */ public static function dump($var,$depth=10,$highlight=true){ echo self::dumpAsString($var,$depth,$highlight); } }
Отличие от стандартного CVarDumper всего одно — подсветка кода включена по умолчанию.
Используется так:
VarDumper::dump($_SERVER);
Сторонние расширения
Поддержку FirePHP можно получить используя расширения yii-firephp или firephp-logroute.
Также стоит обратить внимание на Yii Debug Toolbar и syslogroute.
Полезные методы и классы
Стоит изучить
Автор: Александр Макаров, Sam Dark (rmcreative.ru)Обсуждение и комментарии: …
