Я создавал небольшое количество библиотек / классов с нуля в php.Я пришел из фонового кода и пытаюсь создать несколько библиотек с похожей функциональностью.Я продолжаю сталкиваться с проблемами, связанными с объектами.
Это лучший способ как-то создать суперобъект $this
?Моя основная проблема заключается в том, что я создал объект просмотра и запускаю функцию с именем load
, которая выглядит следующим образом:
class View {
public function __construct() {
}
public function load($file = NULL, $data = array()) {
if($file) {
$file .= '.php';
if(file_exists($file)) {
// Extract variables BEFORE including the file
extract($data);
include $file;
return TRUE;
} else {
echo 'View not found';
return FALSE;
}
} else {
return FALSE;
}
}
}
Затем в моем php-файле вверху есть include 'libraries.php';
, которыйвыглядит так:
include 'database.php';
include 'view.php';
include 'input.php';
include 'form.php';
$config = array(
'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'database' => 'database'
);
$database = new Database($config);
$view = new View();
$input = new Input();
$form = new Form();
Из файла, в который я включил библиотеки, я могу написать что-то вроде $form->value('name');
без ошибок.Однако, если я сделаю что-то вроде этого:
$view->load('folder/index', array('var_name' => 'var_value'));
, тогда из файла folder/index.php
я смогу получить доступ к $var_name
просто отлично, но не к $form->value('name');
.Я получаю ошибки, такие как Call to a member function value() on a non-object in ...
Мой вопрос заключается в том, как я могу организовать свои библиотеки и классы таким образом, чтобы их можно было многократно использовать.Я не хочу использовать фронтальный загрузчик (файл index.php
, через который все сначала проходит).Это может быть проблемой с тем, как я писал свои уроки, но я думаю, что это более серьезная проблема в том, где что-то находится и т. Д.