您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP构造函数问题

2024/11/1 2:44:26发布1341次查看
写法一:
class test{ public $db= new pdo;}

写法二
class test { public $db; public function __construct() { $this->db=new pdo; }}

这两个写法有何本质区别呢
回复内容: 写法一:
class test{ public $db= new pdo;}

写法二
class test { public $db; public function __construct() { $this->db=new pdo; }}

这两个写法有何本质区别呢
第一种写法是错误的:
http://php.net/manual/zh/language.oop5.properties.php
属性类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指 php 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。
1,第一个写法会报错,类属性初始值只能为标量。
2,第二种写法建议修改成:
class test { public $db; public function __construct(pdo $pdo) { $this->db = $pdo; }}$test = new test(new pdo);
你在类中定义的成员变量是不能通过类的实例化、函数返回值来赋值的,第一个写法会报错,你肯定没有在机器上执行代码,你把2个写法在机器上执行下就知道了。
构造函数是类在被实例化后首先调用的函数,会在里面做一些准备工作,比如实例化其他类,根据传入的参数赋值给成员变量。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product