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 для 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'
),
),
),
Начиная с Yii 1.1.3 можно включить error_reporting для правил bizRule. Писать
их придётся со всеми проверками на существование параметров, зато тихих ошибок
больше не будет.
'authManager' => array(
// показываем ошибки только в режиме отладки
'showErrors' => YII_DEBUG
),
Для более удобного использования встроенного дампера можно использовать следующий компонент:
<?php
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)Обсуждение и комментарии
: …