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

WBOY
Freigeben: 2023-03-02 12:44:01
Original
1246 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

Gibt ein Array zurück.

Aber

<code class="php">$this->app</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Gibt ein Array zurück.

Aber

<code class="php">$this->app</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage