Мне не совсем понятен один момент с ООП. Если я использую абстрактный класс, и пытаюсь в него подгрузить сторонний класс (не extends), находящийся в другом файле и делаю это через __construct, то мне выводится ошибка, Class 'Foo' not found in ... А вот если подключаюсь к файлу в нужном методе, то все ок. Просто выглядит не очень красиво, если использовать по 10 раз в одном файле подключение к одному и тому же файлу, для 10 разных методов. Возможно ли использовать одно подключение в __construct-е?
Покажу на примере. Вот такой код выведет ошибку:
abstract class Name {
public function __construct () {
require_once 'Foo.php';
}
public function func1 () {
$foo = new Foo;
// ..
}
public function func2 () {
$foo = new Foo;
// ..
}
// и т.д.
}
А вот этот пример отлично отработает:
abstract class Name {
public function __construct () {
// ..
}
public function func1 () {
require_once 'Foo.php';
$foo = new Foo;
// ..
}
public function func2 () {
require_once 'Foo.php';
$foo = new Foo;
// ..
}
// и т.д.
}
Подскажите пожалуйста, в чем собственно причина?
Похоже дочерний класс должен вызывать функцию-конструктор родителя:
abstract class Name {
public function __construct () {
require_once 'Foo.php'
echo 'require_once called!';
}
public function func1 () {
$foo = new Foo;
}
public function func2 () {
$foo = new Foo;
}
}
class AName extends Name {
public function __construct () {
parent::__construct();
}
public function func1 () {
}
public function func2 () {
}
}
new AName(); //require_once called
Сборка персонального компьютера от Artline: умный выбор для современных пользователей