2013-11-10 4 views
0

Я бы назвал нестатический метод в статическом методе. напримерЕсть ли способ вызова нестатического метода в статическом методе

Вместо вызова метода следующий

$user = new User(); 
$userdata = $user->data($argument); 

Я хотел бы назвать как следующий

$usedata = User::data($argument); 

Во-первых, я построю следующим заходящего

Class User{ 

    public static function __callStatic($methodname, $argument) { 
    $objName = __CLASS__; 
    $obj = new $objName; 
    return $obj->find($argument); 
    } 
    public function find($argument) { 
     return $argument*2; 
    } 
} 

echo User::find(2); 

Но это show Предупреждающее сообщение, но код успешно выполнен. Есть ли еще лучшее решение для этого сценария? Извините за любую ошибку грамматики, которую я сделал с тех пор, как я не являюсь носителем языка, и я не очень свободно владею английским языком.

+2

Статические методы не имеют контекста; нет переменных экземпляра для работы, поэтому нет смысла вызывать нестатический метод в статическом методе. Каким будет контекст нестатического метода? Если у него нет контекста, сделайте его статичным. Если у него есть контекст, то также ваш статический метод, в этом случае вы должны сделать свой статический метод нестатичным. – kba

ответ

0

Если ваш метод find() не использует контекст класса ($ this), и вам необходимо вызвать этот метод статически, то просто объявите его как статический.

Смежные вопросы