Heim  >  Artikel  >  Backend-Entwicklung  >  Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

WBOY
WBOYOriginal
2016-12-01 01:27:431218Durchsuche

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

Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

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

Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

Kurz gesagt, $app ist offensichtlich ein Objekt. Wie kann es in der Form $app[$k] geschrieben werden?

Antwortinhalt:

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

Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

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

Das Anwendungsobjekt $app in Laravel wird als $app[$k] geschrieben, es wird jedoch kein Fehler gemeldet! Warum?

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn