Laravel 5.1 kullanıyorum, ancak bu çerçeveye özgü değil, genel bir PHP sorusu. SonraPHP, ebeveyn sınıfının özelliğinin özellik yöntemini geçersiz kılar.
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;
}
Ben bunu uzanan ilgileniyorum Kullanıcı sınıfı:
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
ile çakışan bir can()
yöntemi vardır
belirtilen özelliklere sahip bir üst sınıf var Authorizable
özelliğidir. Ancak, Authorizable
özelliğinin üst sınıfında olması, bu nedenle Required Trait wasn't added to App\Api\V1\Models\User
numaralı hataya neden olur.
Çevremde arama yaptım ve çocuk sınıfında bildirilen geçersiz özelliklerle ilgili pek çok bilgi var, ancak üst sınıftaki özelliklerin geçersiz kılınmasıyla ilgili hiçbir şey bulamıyorum.
<?php
trait AA {
function f() {
echo "I'm AA::f".PHP_EOL;
}
}
class A {
use AA;
}
trait BB {
function f() {
echo "I'm BB::f".PHP_EOL;
}
}
class B extends A {
use BB;
}
$b = new B();
$b->f();
Ben BB :: Ben özellikleri kopyala-yapıştır kodu gibi çalışmak inanıyoruz
f:
Bunun yerine yapmak zorunda değilsiniz. 'ebeveyni' yapamaz 'can'. – apokryfos
dışında, başka bir özellik ile çakıştığından, özelliği uygulama konusunda bir hata atar. Bu, aşağıdaki örnekte olduğu gibi, diğer örnekte işe yarayacak ve diğer özelliği geçersiz kıldığını düşünüyorum. Yine de farkın ne olduğundan emin değilim. – jdforsythe