关于php:private函数 __construct() 在另一页上调用类时不工作

private function __construct() not working when class called on another page

本问题已经有最佳答案,请猛点这里访问。

我正在使用以下类型的类…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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";
    }
}

当我尝试访问类时

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

Call to protected data::__construct() from invalid context

当我把它公之于众时,它起作用了。是否有任何方法可以使构造函数成为私有的,并且仍然像我一样具有调用方法?我在想哪一个更安全。

任何见解都会受到大家的赞赏。


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

php可能会用new为您隐藏这一点,但这仍然是正在发生的事情。


1
$y = new data();

应该是

1
$y = new datas();