例如,要在 Laravel 4 中正确使用分析器(loic-sharma/profiler),它不需要您创建对象的实例。
$logger = new Profiler\Logger\Logger;
$profiler = new Profiler\Profiler($logger);
Laravel 有这些漂亮的东西叫做 Facades ( http://laravel.com/docs/facades),profiler实现了它们,所以你可以像这样调用 Profiler 和 Log:
public function getTest() {
Profiler::startTimer('testLogging');
$data = Article::select(array(
'articles.id',
'articles.article_date',
'articles.image_link',
'articles.headline',
'articles.category'
)) ->get()
->toArray();
var_dump($data);
Profiler::endTimer('testLogging');
Log::info('Hello World!');
}
这不需要您回显 $profiler,所有输出将自动显示在浏览器的分析器栏中。
注意::
现在在 Profiler 之后,这通常意味着您正在使用外观,重要的是您要了解外观和 $profiler 是完全不同的实体。
如果您尚未安装门面和/或服务提供者,请执行以下操作:
- 首先,您必须使用 composer 安装该软件包,确保在“require”中将其添加到您的 composer.json 之后运行 composer update。-您已经完成了此操作。
- 接下来添加
'Profiler\ProfilerServiceProvider',
到 app/config/app.php 中的服务提供者列表
- 接下来添加
'Profiler' => 'Profiler\Facades\Profiler',
到 app/config/app.php 中的类别名列表
- 然后在控制台运行
php artisan config:publish
loic-sharma/profiler
完成后,上面的修改代码应该可以完美运行。
只是为了澄清您做错了什么,您创建了一个新的分析器实例,new Profiler\Logger\Logger;
如果您已经设置了外观,则分析器栏将显示(回显)到浏览器,因此当您echo $profiler;
现在在浏览器中有两个分析器时会导致打开关闭问题,当您不这样做时,echo $profiler
仍会显示该栏,因为它不是您创建的栏,因此无法正确显示您的输出。
如果您仍想使用您自己的分析器实例:
'Profiler\ProfilerServiceProvider',
从 app/config/app.php 中的服务提供者列表中删除
'Profiler' => 'Profiler\Facades\Profiler',
从 app/config/app.php 中的类别名列表中删除
- 然后在控制台运行
php artisan dump-autoload
然后这将起作用:
public function getTest() {
$logger = new Profiler\Logger\Logger;
$profiler = new Profiler\Profiler($logger);
$profiler->startTimer('testLogging');
$data = Article::select(array(
'articles.id',
'articles.article_date',
'articles.image_link',
'articles.headline',
'articles.category'
)) ->get()
->toArray();
$logger->debug(var_dump($data));
$profiler->endTimer('testLogging');
$logger->info('Hello World!');
echo $profiler;
}