Я читаю, что лучший способ использовать свойства класса (database class
) в другом классе (html class
) - создать экземпляр этого класса внутри класса (html
). Что касается, почему, я не уверен... но так или иначе.
Как это делается? У меня есть два сценария, чтобы увидеть, какие из них правильные, а какие - неправильные...
Сценарий A
require( database.php );
class html(){
private static $db = null;
private static $page = null;
public function __construct($id){
self::bootstrap($id);
}
public static function bootstrap($id){
self::$db = new database();
self::$page = $db->page($id);
return self::$page;
}
}
//$page = new html('hello-world');
//print $page;
print html::bootstrap('hello-world');
Сценарий B
//Class autoloader
spl_autoload_register(function ($class) {
include $_SERVER['DOCUMENT_ROOT'] . '/class/' . $class . '.php';
});
//Scenario B code
class html(){
private static $page = null;
public static function bootstrap($id){
self::$page = database::page($id);
return self::$page;
}
}
print html::bootstrap('hello-world');
Возможно, у вас есть другой сценарий, который подходит, если это неправильный подход
Я бы сказал, что сценарий не соответствует действительности, но сценарий B более уместен. Поскольку page
была разработана как статический метод в классе database
, которая информирует об умышленном использовании метода.