In der Methode getConfig
in der Klasse IlluminateFilesystemFilesystemManager
in Laravel 5.1 verwendet
tatsächlich
<code class="php">$this->app['config']["filesystems.disks.{$name}"]);</code>
Gibt ein Array zurück.
Aber
<code class="php">$this->app</code>
Es ist offensichtlich ein Ziel.
Kann ein Objekt mithilfe des Schlüsselwerts eines Arrays abgerufen werden? Das ist offensichtlich grammatikalisch falsch, aber es ist trotzdem etwas Magisches passiert
Dies ist die getConfig-Methode
<code class="php"> /** * Get the filesystem connection configuration. * * @param string $name * @return array */ protected function getConfig($name) { return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Ich habe separat dd($this->app);
Das ist wie folgt
<code class="php"> /** * Get the filesystem connection configuration. * * @param string $name * @return array */ protected function getConfig($name) { dd($this->app); return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Ausgabe
Aber ich dd($this->app'config'); das ist
<code class="php"> protected function getConfig($name) { dd($this->app['config']["filesystems.disks.{$name}"]); return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Dann ist die Ausgabe wie folgt
Kurz gesagt, $app ist offensichtlich ein Objekt. Wie kann es in der Form $app[$k] geschrieben werden?
In der Methode getConfig
in der Klasse IlluminateFilesystemFilesystemManager
in Laravel 5.1 verwendet
tatsächlich
<code class="php">$this->app['config']["filesystems.disks.{$name}"]);</code>
Gibt ein Array zurück.
Aber
<code class="php">$this->app</code>
Es ist offensichtlich ein Ziel.
Kann ein Objekt mithilfe des Schlüsselwerts eines Arrays abgerufen werden? Das ist offensichtlich grammatikalisch falsch, aber es ist trotzdem etwas Magisches passiert
Dies ist die getConfig-Methode
<code class="php"> /** * Get the filesystem connection configuration. * * @param string $name * @return array */ protected function getConfig($name) { return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Ich habe separat dd($this->app);
Das ist wie folgt
<code class="php"> /** * Get the filesystem connection configuration. * * @param string $name * @return array */ protected function getConfig($name) { dd($this->app); return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Ausgabe
Aber ich dd($this->app'config'); das ist
<code class="php"> protected function getConfig($name) { dd($this->app['config']["filesystems.disks.{$name}"]); return $this->app['config']["filesystems.disks.{$name}"]; }</code>
Dann ist die Ausgabe wie folgt
Kurz gesagt, $app ist offensichtlich ein Objekt. Wie kann es in der Form $app[$k] geschrieben werden?
app erbt von IlluminateContainerContainer
und Container implementiert die Schnittstelle ArrayAccess
(http://php.net/manual/zh/clas...). Die ArrayAccess-Schnittstelle bietet die Möglichkeit, auf Objekte wie auf Arrays zuzugreifen. Solange Sie einige Methoden der Schnittstelle implementieren, können Sie isset, unset, [] aufrufen, um auf Werte zuzugreifen.
$this->app['config']
ist auch ein Objekt IlluminateConfigRepository
Es implementiert auch ArrayAccess, kann also auch als Array verwendet werden.
ArrayAccess