laravel框架 – 打印容器实例

laravel框架 – 打印容器实例

初学laravel的时候,看到service provider这一块,一直纠结如何才能打印出容器内所有的service provider,因为光靠config/app.php文件,很难从alias看出其对应的service provider到底是哪个。后来才发现,其实在程序的任意地方(Application启动后),都可以通过 Container::getInstance()这个静态方法获取当前的Application实例。或者可以使用在全局helps.php中定义的的 app()方法来获取当前Application实例。

注意: 在laravel中打印变量尤其是“超大型”变量的时候,千万不要直接使用var_dump()。一来不直观,二来大型变量直接 var_dump可能会导致浏览器卡死(我猜应该是卡死在尝试将var_dump数据解析成dom上面)。=。=# 最好使用larave的全局函数dd()或者dump(),输出又美观,又不会卡死浏览器。

ps: 最好用dd吧,少用dump,今天发现一个bug,如果使用dump的话,会导致cookie操作失效=。=# 发起了一个讨论帖。   @2016.07.03

打印出来的Application如下如所示:

屏幕快照 2016-06-21 下午10.59.15

serviceProviders:All of the registered service providers. 所有已注册的service provider。其实等同于loadedProviders,只是数组的格式不一样。

loadedProviders:The names of the loaded service providers. 所有已经加载的service provider。等同于serviceProviders。

deferredServices:The deferred services and their providers. 所有延迟加载的service provider。

resolved:An array of the types that have been resolved. 已经解析(resolve)过的绑定关系会记录在这里。

bindings:The container’s bindings. 容器中所有的绑定关系,即由Container::bind()与Container::singleton()定义的绑定关系。

instances:The container’s shared instances. 容器中所有单例绑定的已生成的实例对象。

aliases:The registered type aliases. 绑定关系的别名,通过Container::alias(绑定名, 别名)来定义,容器查找绑定关系的时候,会同时查找bindings[]与aliases[]数组。

发表评论

电子邮件地址不会被公开。 必填项已用*标注