php - 在 PHP 构造函数之外初始化变量

标签 php oop constructor

我在浏览 PHP 文档时看到了一些注释,其中变量是在类的构造函数之外初始化的,类似于以下内容:

classMyClass {
    private $count = 0;

    public function __construct() {
        //Do stuff
    }
}

PHP 对象、模式和实践 中,作者建议仅将构造用于属性的初始化,将任何繁重的工作或复杂的逻辑推迟到专用方法。本教程(我在 Google 上找到的一个快速示例)还建议使用构造函数来初始化属性:http://www.killerphp.com/tutorials/object-oriented-php/php-objects-page-3.php .

为什么要在构造函数之外初始化变量?这只是草率的编码,还是有理由做这样的事情?我不得不说,直到最近,我还在构造函数之外初始化了默认值,并且似乎没有一种方法比另一种方法有任何编程优势。

最佳答案

当你在构造函数之外初始化一个变量时,它必须被初始化为一个常量。你不能做任何操作来初始化它。因此,该成员的初始值实际上是类签名的一部分。

例如,这是无效的:

private $var = $othervar;
private $var = func();

您也可以在构造函数中执行此操作,但它会有点冗长,并且会给构造函数添加一些困惑,除非有某种逻辑在进行。

关于php - 在 PHP 构造函数之外初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11248569/

相关文章:

php - 在数组中拆分数组(Mysql、PHP 和 Ajax)

oop - SharedFolder中违反里氏替换原则

javascript - 异步、回调和 OOP JavaScript : how do I organize this?

Java Swing : Inner JFrame class closes main window on close

javascript - JS - 无法获取函数实例的构造函数名称

php - Joomla,如何在最新模块中显示类别名称

c# - php中的友元函数是什么?

c++ - 在另一个类的声明中将参数传递给类构造函数

php - Codeigniter 的 activerecord set() 方法将我的值视为列名

c# - 以下语句中的 `this` 和 `base` 有什么区别?