| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Не передается параметр в конструктор класса. |
| Автор: Kotakota 22.4.2011, 10:11 | ||||
| Привет. Файл index.php
Файл TestClass.php
При передаче аргумента конструктору возникает следующая ошибка: Warning: Missing argument 1 for TestClass::__construct() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TestClass.php on line 3 Notice: Undefined variable: myVariable in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\TestClass.php on line 4 |
| Автор: DenWPF 22.4.2011, 10:17 |
| public myVariable; может нужно $ поставить? пишет же Undefined variable: myVariable т.е переменная не определена |
| Автор: нуп 22.4.2011, 10:18 |
| Автор: Kotakota 22.4.2011, 10:22 |
| Это опечатка. Знак $ там был. Поправил. Ошибка актуальна! |
| Автор: ksnk 22.4.2011, 10:25 |
А больше опечаток нет? Откуда берется Controller, |
| Автор: Kotakota 22.4.2011, 10:29 | ||||
Исправил. Больше опечаток нет. Заметил вот, что:
Все работает! И в чем была проблема? Версия PHP: 5.3 |
| Автор: DenWPF 22.4.2011, 10:40 |
| страно конечно, значит надо инициализировать поля. |
| Автор: Kotakota 22.4.2011, 10:48 | ||
Это очень странно. Переменные в PHP не имеют типа. Какого типа значения, такого типа будет и переменная... |
| Автор: DenWPF 22.4.2011, 10:57 |
| 5.3 может так и есть. |
| Автор: SneG0K 22.4.2011, 11:23 | ||
| PHP Version 5.3.3-1ubuntu9.3 Все в порядке
|
| Автор: Kotakota 22.4.2011, 11:48 |
| Смысл следующий! От класса TestClass куда передаются аргументы в конструктор наследуются другие классы. И вот когда вызывается наследуемый класс, то срабатывает конструктор (не понятно почему?) класса родителя. Естественно, что там $config будет пустая, так-как с index.php уже ничего не передается... Вот поэтому, когда я поставил __construct($myVariable=null) все сработало без ошибки. Непонятно почему вызывается конструктор родителя, при вызове класса наследника? Классы наследники вызываются у меня через Reflection. |
| Автор: SneG0K 22.4.2011, 11:51 |
| Конструктор переопределен? Если нет, то тогда вызывается родительский. Добавлено через 29 секунд То что в первом топике никак не связано с наследованием. |
| Автор: Kotakota 22.4.2011, 11:55 | ||||||||||||
Имеется такая структура: Файл index.php
Файл TestClass.php
Файл SomeClass.php
Файл ThreeClass.php
Когда вызывается метод someFunction() класса SomeClass, происходит вызов конструктора родительского класса TestClass. Так - как в момент вызова аргумент (myVariable) передающийся в конструктор класса TestClass, не определен, получаем ошибку: Warning: Missing argument 1 for TestClass::__construct() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\TestClass.php on line 4 Notice: Undefined variable: myVariable in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\TestClass.php on line 5 Передается этот аргумент в конструктор класса TestClass, только один раз, при вызове index.php. Делаю дальше. В файл класса SomeClass дописываю свой конструктор, чтобы он не наследовался по умолчанию и не пытался передать аргумент (myVariable). Файл SomeClass.php
Получаем следующую ошибку: Fatal error: Call to a member function threesomeFunction() on a non-object in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\SomeClass.php on line 8 Помогите разобраться! |
| Автор: Kotakota 24.4.2011, 21:15 |
| Вроде все правильно описал. |