PHP:如何在 class 中正确创建 class 的实例? (也就是在 class 中使用 class)
PHP: How to properly create an instance of a class within a class? (AKA use a class within a class)
我读到在另一个 class (html class
) 中使用 class 属性 (database class
) 的最佳方法是创建 class 属性 (database class
) 的实例=34=] 在 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
class 中被设计为静态方法,这表明该方法是有意使用的。
我读到在另一个 class (html class
) 中使用 class 属性 (database class
) 的最佳方法是创建 class 属性 (database class
) 的实例=34=] 在 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
class 中被设计为静态方法,这表明该方法是有意使用的。