2016-04-08 2 views
1

У меня есть некоторые проблемы с моим классом моделью и другими классами, так что я сделал этот простой пример, чтобы объяснить мою проблему:Создать объект из текущего класса в статическом методе - PHP

class person{ 

    public static $a = "welcome"; 

    public function __construct(){ 
           } 

    public static function getobject() 
    { 
     $v = new person(); 
     return $v; 
    } 

} 

class student extends person{ 

    public static $b = "World"; 

} 

$st = student:getobject();//this will return person object but I want student object 

echo $st->$b; // There is an error here because the object is not student 

Так что я хочу знать что написать вместо $v = new person();, чтобы получить объект последнего унаследованного класса.

ответ

1

Используйте ключевое слово late static bindingstatic.

public static function getobject() 
{ 
    $v = new static(); 
    return $v; 
} 

Так, с student::getobject() вы получите экземпляр student.

Чтобы получить статическое (но почему?) $b уместность, вы можете сделать $st::$b или просто student::$b.

+0

Ahhhhhhhhhhhhhhhh Я собираюсь умереть из-за этого PHP, что здесь делает статичность, какова связь между статикой и именем класса, в любом случае спасибо, она работает, и я буду отмечать ваш ответ как правильный через 5 минут , потому что я не могу этого сделать сейчас :) из-за правил сайта –

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