ООП и наследование

Статус
В этой теме нельзя размещать новые ответы.

Deller

Создатель
Регистрация
24 Фев 2008
Сообщения
34
Реакции
16
Приветствую. Возник такой вопрос. Есть базовый класс в неком методе вызывающий свой класс расширение, в том же методе задается одно из протектед свойств класса. Каким образом можно из класса расширения вызвать ето свойство с полученным значением не вызывая свойство базового класса. Для понимания приведу простейший пример
Код:
class Page
{
       protected $newSys;
       protected function action()
       {
            $this->newSys = 'data';
            $obj = new classHTML();
       }
}


class classHTML extends Page{
   function GetNewSys
           {
               return $this->newSys;
           }
}


передавать параметр через глобали, или параметром вызова classHTML не хотелось бы. Глобали ето не оч хорошо с точки зрения безопасности, а параметром нарушается полиморфизм системы чего не хотелось бы делать.
Зы Создание в Page функции возвращающей значение newSys не дало результата, ибо возвращается пустое значение.
 
Я предлагаю сделать так - передавать переменную все таки через конструктор, в котором нужно определить параметр по умолчанию:

Код:
.....
class classHTML extends Page {

   function classHTML($n_data='') {
            if($n_data)
            $this->newSys=$n_data;
        }
....

И теперь можно создавать объект и с параметром и без:

Код:
class Page
{
       protected $newSys;
       protected function action()
       {
            $this->newSys = 'data';
            $obj = new classHTML($this->newSys);
            echo $obj->GetNewSys();
       }
 }
И
Код:
$obj = new classHTML();
 
Сделал проще. Стал параметром передавать обьект класса парента. Не слишком экономично в плане памяти зато загнав в свойства класса парента все что нужно сохраняю единообразие в классах расширениях. Спасибо за желание помочь.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху