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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie aufgerufen Merkmale und stehen seit PHP 5.4. Sie importiert werden in eine andere Klasse oder namespace mithilfe verwenden keyword enthalten, da PHP 5.0 wie das importieren von einer regulären Klasse in eine andere Klasse. Sie sind mit einfacher Vererbung. Der primäre Grund für die Durchführung der Züge ist wegen der Einschränkung von einfacher Vererbung.
Weitere details finden Sie in der PHP-trait-Handbuch: