Include class oop php

142
26 июня 2019, 18:10

Мне не совсем понятен один момент с ООП. Если я использую абстрактный класс, и пытаюсь в него подгрузить сторонний класс (не 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;
        // ..
    }
    // и т.д.
}

Подскажите пожалуйста, в чем собственно причина?

Answer 1

Похоже дочерний класс должен вызывать функцию-конструктор родителя:

 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
READ ALSO
Разница между mysqli_fetch_assoc и mysqli_fetch_array

Разница между mysqli_fetch_assoc и mysqli_fetch_array

Они вроде как оба возвращают ассоциативный массив В чем разница

163
phpQuery xml парсинг

phpQuery xml парсинг

Не могу справится с парсингом xml ссылки

144
Ссылки относительно корня сайта php

Ссылки относительно корня сайта php

Ребят, приветРаботаю с этим массивом и возник следующий вопрос

165
Yii2 ORA-01461: can bind a LONG value only for insert into a LONG column?

Yii2 ORA-01461: can bind a LONG value only for insert into a LONG column?

В Yii2(с ActiveRecord) я питаюсь добавить большой текст в БД но вернет такая ошибка

130