PHP : den "nutzen" innerhalb der Klasse definition

Kürzlich stieß ich auf eine Klasse, die verwendet use - Anweisung innerhalb der Klasse definition.

Könnte mir jemand erklären, was genau es macht - wie ich finde keine Informationen darüber.

Verstehe ich, dass es vielleicht ein Weg, bewegen Sie Weg, bilden eine Globale Rahmen der gegebenen Datei, aber ist es vielleicht erlauben die angegebenen Klasse erbt von mehreren übergeordneten Klassen sowie - seit extends erlaubt nur einer übergeordneten Klasse verweisen?

Dem Beispiel, das ich sah, war in das Benutzer-Modell von der ursprünglichen installation von Laravel:

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    use UserTrait, RemindableTrait;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = array('password', 'remember_token');

}

und ich habe gesehen, einige Beispiele für dieses Modell tatsächlich mit Methoden, die innerhalb des UserTrait Klasse - daher auch mein Verdacht, aber würde wirklich gerne, um herauszufinden, mehr über die Bedeutung der geschlossenen use Aussagen.

In der PHP-Dokumentation sagt:

Dem Schlüsselwort deklariert werden müssen, im äußersten Gültigkeitsbereich (der
globalen Gültigkeitsbereich) oder innerhalb einer namespace-Deklaration. Dies ist, weil die
das importieren erfolgt zur Kompilierzeit und nicht zur Laufzeit, so kann es nicht sein
block beschränkt. Das folgende Beispiel zeigt eine rechtswidrige Verwendung der
verwenden Sie das Schlüsselwort:

gefolgt von der Beispiel:

namespace Languages;

class Greenlandic
{
    use Languages\Danish;

    ...
}

was darauf hindeuten würde, dass es eine falsche Verwendung von use keyword - irgendwelche Hinweise?

  • Wenn es kann leicht beantwortet werden, dann zeigen Sie mir, dass Beispiel -nicht nur downvote, ohne tatsächlich geben die Antwort!
  • php.net/manual/en/language.oop5.traits.php
  • Also das ist genau das, was ich dachte - Mehrfachvererbung - 'Ein Merkmal ist vorgesehen, zu verringern einige der Beschränkungen der einfachen Vererbung, indem ein Entwickler reuse-sets von Methoden frei in mehreren voneinander unabhängigen Klassen das Leben in verschiedenen Klassenhierarchien.' - war es wirklich so schwer? - oh - und danke für den link!
  • Es ist wirklich keine Mehrfachvererbung, es ist näher an Mixins in Verbindung.
  • Verstanden - obwohl funktional, die es ermöglicht die Vererbung von zusätzlicher Methoden - auch mit dem ähnlichen überschreiben Mechanismus.
Schreibe einen Kommentar