Приветствую.. есть: класс AA и два его дочерних класса - BB и CC.. оба "extends AA".. вопрос: как из класса BB вызвать функцию в классе CC?.. и почему обращение из BB или CC к функции класса AA через parent::function() выдает ошибку: Fatal error: Call to a member function test() on a non-object заранее сорри)..
из BB можно вызвать метод класса AA, но не CC. по второму вопросу PHP: <?php class A { function test_a() { echo 'test_a'; } } class B extends A { function test_b() { parent::test_a(); } } $c=new B(); $c->test_b(); работает..
Как зачем?.. это ООП или что? Ну вот допустим класс Main и два его дочерних класса - User и Page, первый занимается например проверкой логина, а второй соответственно рендерит страничку.. Допустим, второму нужно узнать ник пользователя, чтобы вывести его на экран.. ну и что, в PHP это нельзя сделать как-то логично и понятно?.. это вообще можно сделать? )) вот логичный код, почему он не работает?.. че за фигня? )) PHP: new Main(); class Main { var $user; var $page; function Main() { $this->user = new User(); $this->page = new Page(); } } class User extends Main { var $user_nickname; function User() { $this->user_nickname = 'Pupkin'; } } class Page extends Main { function Page() { echo parent::$user->user_nickname; // <<<<<<<<<< Fatal error: Undefined class constant 'user_nickname' } }
Вы пытаетесь оперировать классами как объектами. Есть несколько способов сделать то что Вам нужно. Например: Есть объект класса Main. Ему в конструктор передаются объекты классов User и Page. PHP: <?php A=new Main(new User($login, $pass), new Page()); ?> Объект A вызывает метод paint() и передает туда имя пользователя. PHP: <?php $this->page->paint($this->user->getName()); ?> или можно объявить $user статическим. Вот только вопрос: нужен ли этот объект класса Main и нужен ли этот объект класса Page?
потому что нефиг обращаться к нестатической функции как к статической. либо вызывай так: $this->test_a(); либо определяй test_a так public static function test_a()