Out of the Box, Laravel 5.2 kommt mit ein paar ORM-Klassen. Vor allem ist eine davon die Benutzer-ORM-Klasse. Die meisten ORM-Modelle müssen Illuminate\Database\Eloquent\Model
erweitern, die etwa wie folgt aussieht:Muss Laravel User.php ORM Illuminate Foundation Auth User? Kann Funktionalität über ein Merkmal eingebracht werden?
use Illuminate\Database\Eloquent\Model;
class Articles extends Model {
...
Allerdings muss das Benutzermodell Illuminate\Foundation\Auth\User
verlängern, wenn Sie eine der Authentifizierungsfunktionen verwenden möchten. Dies wird in der Regel als so etwas wie die folgenden gesehen:
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable {
...
jedoch alle meine ORM-Dateien erweitern, um eine benutzerdefinierte ORM-Klasse (die einige Standardabfrage Scoping Methoden enthält und andere sehr nützliche Dinge, die ich geschrieben habe), die dann , wiederum erweitert Illuminate \ Database \ Eloquent \ Model.
Also mit anderen Worten, ich möchte haben:
Illuminate\Database\Eloquent\Model
App\Klass\OrmRoot\MyCoolSubClass extends Illuminate\Database\Eloquent\Model
App\Klass\Orm\User extends MyCoolSubClass
Aber ich bin zu haben, gezwungen: Unterstützung
Illuminate\Database\Eloquent\Model
App\Klass\OrmRoot\MyCoolSubClass extends Illuminate\Database\Eloquent\Model
App\Klass\Orm\User extends Illuminate\Foundation\Auth\User
Da PHP nicht polymorhpic Vererbung, wenn meine die Klasse unter Angabe User.php ORM-Datei erstreckt sich von, ich muss wählen, entweder alle Methoden in meiner benutzerdefinierten Basis-ORM-Klasse innerhalb der Benutzer-ORM-Klasse zu verdoppeln (lächerlich), oder nicht die Benutzer-ORM-Klasse Benutzerauthentifizierungsfunktionalität haben. Beide scheinen undurchführbar.
Gibt es eine andere Möglichkeit, die Authenticable-Funktionalität in eine User.php-ORM-Datei aufzunehmen? Vielleicht als Merkmal? Zu diesem Nutzungsmuster scheint es keine Dokumentation zu geben.