Niedawno natknąłem się na klasę, która używa instrukcji use
wewnątrz definicji klasy.PHP: "użyj" wewnątrz definicji klasy
Czy ktoś mógłby wyjaśnić, co dokładnie robi - ponieważ nie mogę znaleźć żadnych informacji na ten temat.
Rozumiem, że może to być sposób na przeniesienie go z globalnego zakresu danego pliku, ale czy to może pozwolić danej klasie dziedziczyć również z wielu klas nadrzędnych - ponieważ extends
zezwala tylko na odwołanie do jednej klasy macierzystej?
Przykład widziałem był w modelu użytkownika oryginalnej instalacji 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');
}
i widziałem kilka przykładów tego modelu rzeczywistości z wykorzystaniem metody zawarte w klasie UserTrait
- stąd moje podejrzenie, ale naprawdę chciałbym dowiedzieć się więcej na temat znaczenia załączonych oświadczeń use
.
PHP documentation mówi:
Zastosowanie kluczowe muszą być zadeklarowane w zakresie peryferyjnego pliku (zakres globalnej ) lub wewnątrz deklaracji przestrzeni nazw. Wynika to z faktu, że importowanie odbywa się w czasie kompilacji, a nie w środowisku wykonawczym, więc nie może mieć zakresu bloków. Poniższy przykład pokaże, nielegalnego wykorzystania kluczowych zastosowanie:
następnie przykładzie:
namespace Languages;
class Greenlandic
{
use Languages\Danish;
...
}
które wskazywałyby, że jest to błędne użycie słowa kluczowego use
- jakieś wskazówki?
Jeśli można go łatwo odpowiedział następnie wskaż mnie do tego przykładu - nie po prostu głosuj bez udzielenia odpowiedzi! –
http://php.net/manual/en/language.oop5.traits.php – GordonM
Tak właśnie uważałem - dziedziczenie wielokrotne - "Cecha ma na celu ograniczenie pewnych ograniczeń pojedynczego dziedziczenia poprzez umożliwienie deweloperowi ponownego wykorzystania zbiorów metod swobodnie w kilku niezależnych klasach żyjących w różnych hierarchiach klasowych. " - czy to było naprawdę trudne? - oh - i dzięki za link! –