PHP中的构造函数

Posted

技术标签:

【中文标题】PHP中的构造函数【英文标题】:Constructor in PHP 【发布时间】:2017-08-13 05:50:40 【问题描述】:

php 中的构造方法是否接受类中声明的参数?

我在多个网站和书籍以及 PHP 文档中看到函数函数 __construct() 不带任何参数。

【问题讨论】:

__construct 可以采用与任何其他方法相同的参数。 你一定是读错了书籍和文档——构造函数可以使用你定义的任意数量的参数 如有疑问 - 只需阅读官方文档中的此类内容,而不是依赖第三方资源。 php.net/manual/en/language.oop5.decon.php 其实我想知道你所说的“类中声明的参数”是什么意思......一个类没有声明的参数,只有方法(函数)有。构造函数就是这样一种方法。它将接受在其实现中声明的任何参数。 【参考方案1】:

__construct 可以带参数。根据the official documentation,这个方法签名是:

void __construct ([ mixed $args = "" [, $... ]] )

看来它可以带参数!

使用方法:

class MyClass 
    public function __construct($a) 
        echo $a;
    


$a = new MyClass('Hello, World!'); // Will print "Hello, World!"

【讨论】:

【参考方案2】:

PHP 构造函数可以像其他函数一样接受参数。 __construct()函数不需要加参数,例如:

示例 1:无参数

<?php
class example 
    public $var;
    function __construct() 
        $this->var = "My example.";
    


$example = new example;
echo $example->var; // Prints: My example.
?>

示例 2:带参数

<?php
class example 
    public $var;
    function __construct($param) 
        $this->var = $param;
    


$example = new example("Custom parameter");
echo $example->var; // Prints: Custom parameter
?>

【讨论】:

以上是关于PHP中的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的构造函数重载

将参数从php中的数组传递给构造函数[重复]

构造函数可以访问 PHP 中的父私有属性吗?

常见的构造函数类型

php构造函数的PHP 5 构造函数和析构函数

PHP构造函数和析构函数