Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вызов конструктора "пра" родителя / 12 сообщений из 12, страница 1 из 1
14.06.2013, 13:19
    #38297695
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
Всем привет!
Есть следующий код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class A {
	public $test;
	public function __construct() {
		$this->test = 777;
	}
}

class B {
	public function __construct() {
		parent::construct();
	}
}


Я хочу в классе C вызвать конструктор класса A, но ни так:
Код: php
1.
2.
3.
4.
5.
class C {
	public function __construct() {
		parent::construct();
	}
}



ни так:

class C extends B {
public function __construct() {
A::construct();
}
}

не получается - свал. Есть способ сделать то, что я хочу?
...
Рейтинг: 0 / 0
14.06.2013, 13:20
    #38297697
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
забыл extends... исправленный код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
class A {
	public $test;
	public function __construct() {
		$this->test = 777;
	}
}

class B extends A {
	public function __construct() {
		parent::construct();
	}
}

class C extends B {
	public function __construct() {
		A::construct();
	}
}
...
Рейтинг: 0 / 0
14.06.2013, 13:27
    #38297708
mhx
mhx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
Вызываете несуществующий метод construct() вместо __construct()
...
Рейтинг: 0 / 0
14.06.2013, 13:41
    #38297731
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
mhx,
спасибо, провтык. Вопрос все равно остался, если вызываю parent конструктор в классе C, вызывается конструктор класса B, и только потом класса A. То есть единственный вариант вызывать конструктор класса A напрямую?
...
Рейтинг: 0 / 0
14.06.2013, 14:15
    #38297809
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
MaximuS_G,

унаследовать от класса а
...
Рейтинг: 0 / 0
14.06.2013, 15:01
    #38297928
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
Можно, спс. Но что если класс B содержит функциональность, которая нужна в классе C?
...
Рейтинг: 0 / 0
14.06.2013, 16:25
    #38298060
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
MaximuS_G,

значит неправильно классы раскидали. То что нужно в классе А выноситсья в отдельный метод, и вызываеться отдельно в конструкторе С.
...
Рейтинг: 0 / 0
14.06.2013, 16:32
    #38298068
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
авторpublic function __construct() {
A::construct();
}
и что правда работает?
а конструктор ЧЕГО оно вызывает?
...
Рейтинг: 0 / 0
14.06.2013, 16:43
    #38298093
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
Ренат, я понял. Спасибо большое! Я использую фреймворк kohana, подстраиваюсь уже под что есть :).
ScareCrow, там опечатка :). Правильно "A::__construct".
...
Рейтинг: 0 / 0
14.06.2013, 16:45
    #38298095
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
и что правда работает?
а конструктор ЧЕГО оно вызывает?
...
Рейтинг: 0 / 0
14.06.2013, 17:11
    #38298147
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
Работает, а почему ему не работать? Вызывает конструктор класса А. Вот более осмысленный пример:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class A {
	public static $test;
	public function __construct() {
		self::$test = 777;
	}
}

class B extends A {
	public function __construct() {
		parent::__construct();
	}
}

class C extends B {
	public function __construct() {
		A::__construct();
	}
}

$c = new C();
echo A::$test; // 777
...
Рейтинг: 0 / 0
14.06.2013, 17:13
    #38298149
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов конструктора "пра" родителя
А вот если убрать класс B из цепочки наследования, то валиться - вызов не статического метода __construct
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вызов конструктора "пра" родителя / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]