• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP构造函数问题

php 搞代码 4年前 (2022-01-25) 28次浏览 已收录 0个评论
文章目录[隐藏]

写法一:

<code>class test{    public $db= new PDO;}</code>

写法二

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

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

回复内容:

写法一:

<code>class test{    public $db= new PDO;}</code>

写法二

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

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

<body>

第一种写法是错误的:

http://php.net/manual/zh/language.oop5.properties.php

属性

类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值@本文来源gaodai$ma#com搞$代*码6网搞代gaodaima码必须是常数,这里的常数是指 PHP 脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。

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

<code class="php">class test {    public $db;        public function __construct(PDO $pdo)    {        $this->db = $pdo;    }}$test = new Test(new PDO);</code>

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP构造函数问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址