Функция load_class
Я пытаюсь создать функцию, которая будет автоматически загружать классы, поэтому я могу сделать что-то вроде этого:
load_class('Db');
$db->query();
Вот мой код до сих пор. Он загружает файл и создает экземпляр класса успешно, но когда я пытаюсь вызвать метод, как описано выше, я получаю Call to member function
ошибка.
Вот мой код:
function load_class($class) {
$file = 'classes/' . $class . '.php';
if (file_exists($file)) {
include_once($file);
if (class_exists($class)) {
$class = new $class();
return $class;
}
}
}
Что мне не хватает?
Спасибо!
2 ответа
Решение
load_class
вернуть экземпляр Db
класс, если он нашел объявление.
Вам может потребоваться сделать:
$db = load_class('Db');
if (!$db) {
throw new Exception('Failed to load db!');
}
$db->query();
Но, если вы хотите автоматически загрузить класс, когда вы делаете $db = new Db;
, тогда вы должны взглянуть на автозагрузку PHP.
Пример:
function load_class($class) {
$file = 'classes/' . $class . '.php';
if (file_exists($file)) {
include_once($file);
}
}
spl_autoload_register('load_class');
Чтобы ваш код работал, сделайте так:
$db = load_class('Db');
$db->query();