Как не разрешить определение метода подкласса в PHP - PullRequest
2 голосов
/ 06 июня 2011

Как я могу предотвратить создание метода something ниже в классе foo?

class fooBase{

  public function something(){

  }
}

class foo extends fooBase{

  public function __construct(){
    echo $this->something(); // <- should be the parent class method
  }

  public function something(){ 
    // this method should not be allowed to be created
  }
}

Ответы [ 3 ]

10 голосов
/ 06 июня 2011

Используйте ключевое слово final (как в Java и т. Д.):

class fooBase{

  final public function something(){

  }
}

class foo extends fooBase{

  public function __construct(){
    echo $this->something(); // <- should be the parent class method
  }

  public function something(){ 
    // this method should not be allowed to be created
  }
}

См. Финальное ключевое слово PHP . Обратите внимание, что foo будет по-прежнему иметь метод something, но something будет поступать только от fooBase и foo не сможет его переопределить.

2 голосов
/ 06 июня 2011

Вы можете использовать final для предотвращения перезаписи базовых методов.

class fooBase{

  final public function something(){

  }
}
2 голосов
/ 06 июня 2011

Используйте последнее ключевое слово.

У вашего родителя:

final public function something()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...