PHP构造函数问题

她说她喜欢浪丶
  • 4.9k

写法一:

class test
{
    public $db= new PDO;

}

写法二


class test 
{
    public $db;
    
    public function __construct()
    {
        $this->db=new PDO;
    }

}

这两个写法有何本质区别呢??

回复
阅读 3k
2 个回答
thenbsp
  • 1.3k

1,第一个写法会报错,类属性初始值只能为标量。
2,第二种写法建议修改成:

class test 
{
    public $db;
    
    public function __construct(PDO $pdo)
    {
        $this->db = $pdo;
    }

}

$test = new Test(new PDO);
wolf
  • 48

你在类中定义的成员变量是不能通过类的实例化、函数返回值来赋值的,第一个写法会报错,你肯定没有在机器上执行代码,你把2个写法在机器上执行下就知道了。

构造函数是类在被实例化后首先调用的函数,会在里面做一些准备工作,比如实例化其他类,根据传入的参数赋值给成员变量。

宣传栏