我正在使用Laravel 5.1,但这并不特定于该框架,这更是一个通用的PHP问题。
有一个指定了trait的父类:
然后我有一个用户类,我关心它是否从那个类继承:
“EntrustUserTrait”具有一个与“Authorizable”trait冲突的“can()”方法。然而,“Authorizable” trait位于父类中,因此会抛出错误“Required Trait wasn't added to App\Api\V1\Models\User”。我已经搜索了很多信息,关于在子类中覆盖声明的traits有很多信息,但我似乎找不到关于如何覆盖父类中的traits的任何信息。”
有一个指定了trait的父类:
namespace Illuminate\Foundation\Auth;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Model implements
AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract {
use Authenticatable, Authorizable, CanResetPassword;
}
然后我有一个用户类,我关心它是否从那个类继承:
namespace App\Api\V1\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Authenticatable {
use EntrustUserTrait {
EntrustUserTrait::can insteadof \Illuminate\Foundation\Auth\Access\Authorizable;
}
}
“EntrustUserTrait”具有一个与“Authorizable”trait冲突的“can()”方法。然而,“Authorizable” trait位于父类中,因此会抛出错误“Required Trait wasn't added to App\Api\V1\Models\User”。我已经搜索了很多信息,关于在子类中覆盖声明的traits有很多信息,但我似乎找不到关于如何覆盖父类中的traits的任何信息。”
can
会覆盖父级的can
。 - apokryfos