laravel里应用对象$app,写成$app[$k]竟然不报错!为何?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了laravel里应用对象$app,写成$app[$k]竟然不报错!为何?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2216字,纯文字阅读大概需要4分钟。
内容图文
![laravel里应用对象$app,写成$app[$k]竟然不报错!为何?](/upload/InfoBanner/zyjiaocheng/149/f5d4f1aee38345f9a0bd91113cea73f6.jpg)
在laravel 5.1里的
IlluminateFilesystemFilesystemManager 类中的
getConfig方法中
竟然用
$this->app['config']["filesystems.disks.{$name}"]);
返回数组。
但是
$this->app
明明是个对象啊。
对象能用数组的键值取值吗? 这在语法上明明是错的但是神奇的事情还是发生了
这是getConfig方法
/**
* Get the filesystem connection configuration.
*
* @param string $name
* @return array
*/
protected function getConfig($name)
{
return $this->app['config']["filesystems.disks.{$name}"];
}
我单独dd($this->app);
即如下
/**
* Get the filesystem connection configuration.
*
* @param string $name
* @return array
*/
protected function getConfig($name)
{
dd($this->app);
return $this->app['config']["filesystems.disks.{$name}"];
}
输出
但是我dd($this->app'config');即
protected function getConfig($name)
{
dd($this->app['config']["filesystems.disks.{$name}"]);
return $this->app['config']["filesystems.disks.{$name}"];
}
那么输出如下
总之 $app 明明是个对象,怎么能写成 $app[$k] 这样的形式呢?
回复内容:
在laravel 5.1里的
IlluminateFilesystemFilesystemManager 类中的
getConfig方法中
竟然用
$this->app['config']["filesystems.disks.{$name}"]);
返回数组。
但是
$this->app
明明是个对象啊。
对象能用数组的键值取值吗? 这在语法上明明是错的但是神奇的事情还是发生了
这是getConfig方法
/**
* Get the filesystem connection configuration.
*
* @param string $name
* @return array
*/
protected function getConfig($name)
{
return $this->app['config']["filesystems.disks.{$name}"];
}
我单独dd($this->app);
即如下
/**
* Get the filesystem connection configuration.
*
* @param string $name
* @return array
*/
protected function getConfig($name)
{
dd($this->app);
return $this->app['config']["filesystems.disks.{$name}"];
}
输出
但是我dd($this->app'config');即
protected function getConfig($name)
{
dd($this->app['config']["filesystems.disks.{$name}"]);
return $this->app['config']["filesystems.disks.{$name}"];
}
那么输出如下
总之 $app 明明是个对象,怎么能写成 $app[$k] 这样的形式呢?
app继承自 IlluminateContainerContainer
, 而 Container 实现了ArrayAccess
(http://php.com/manual/zh/clas...)接口。ArrayAccess接口提供了像访问数组一样访问对象的能力,只要实现接口的几个方法就可以调用 isset, unset, []方式存取值。
$this->app['config']
也是个对象 IlluminateConfigRepository
它也实现了 ArrayAccess ,所以也能当数组用。
ArrayAccess
内容总结
以上是互联网集市为您收集整理的laravel里应用对象$app,写成$app[$k]竟然不报错!为何?全部内容,希望文章能够帮你解决laravel里应用对象$app,写成$app[$k]竟然不报错!为何?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。