PHP:如何在类中正确创建类的实例? (AKA使用班级内的课程)

时间:2015-02-03 02:19:24

标签: php class oop

我正在读到在另一个类(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');

如果这些是错误的方法,也许你有一个合适的不同场景

1 个答案:

答案 0 :(得分:1)

我认为没有任何情况是错误的,但情景B更合适。由于page被设计为database类中的静态方法,因此会通知故意使用该方法。