0

我使用以下类型的课程...

class datas{


    protected $req ;
    protected $db ;


    private function __construct()
    {
        $this->db = new Database('localhost', 'user', 'pass', 'db');
        $this->db->connect(); 
    }

    public function prnt()
    {
       echo "afafa6e5f1ga56d18a1ge";
    }
}

当我尝试访问课程时

$y = new datas();
$y->prnt();

从无效上下文调用受保护数据::__construct()

当我将其公开时,它可以工作。有什么方法可以使构造函数私有并且仍然像我一样拥有调用方法。我在想哪个更安全。

任何见解都是赞赏的家伙。

4

2 回答 2

2

您的构造函数应该是公共的,因为它是在类上下文之外调用的。

PHP 可能会为您隐藏它,使用new,但这仍然是正在发生的事情。

于 2013-07-26T17:19:22.363 回答
-1
$y = new data();

应该

$y = new datas();
于 2013-07-26T17:18:39.780 回答