PHP - Переопределение свойств - PullRequest
2 голосов
/ 24 ноября 2011

Есть ли способ предотвратить переопределение свойств в PHP? И если да - как?

Ответы [ 4 ]

4 голосов
/ 24 ноября 2011

Я думаю, это то, что вы хотите:

class A{
    private $a;
    public function __construct(){
        $this->a = 'A';
    }
    public function __get($property){
        return $this->{$property};
    }
}

class B Extends A{
    public function getA(){
        return $this->a;
    }
    public function __get($property){
        return parent::__get($property);
    }
}

$b = new B;
echo $b->getA();
1 голос
/ 24 ноября 2011
class TheBaseClass {

  private $nomod = 'foo';

  public function getNoMod() {
     return $this->nomod;
  }
}

class TheChildClass extends TheParentClass {
   public function funcUsesNomod(){
      return 'The value of nomod is '. $this->getNomod();
   }
}
1 голос
/ 24 ноября 2011

Единственный способ сделать это - сыграть с __set() в классе. Но , __set используется только для недоступных свойств.

Что касается общедоступных объектов, я не думаю, что существует какой-либо способ предотвратить переопределение.

Вам следует ознакомиться с официальной документацией: http://fr2.php.net/manual/en/language.oop5.overloading.php

0 голосов
/ 24 ноября 2011

«Да», если вы сделаете их постоянными. См. Ответы на Как реализовать переменную-член только для чтения в PHP? , не пропускайте комментарии.

Пример:

class user {
  const ALWAYS_ONE = 1;
}

Полагаю, объявление свойств как private также предотвращает перегрузку, но они также недоступны для нисходящих классов.

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