为什么在声明它们时可以在PHP类的构造中设置变量?

T. *_*nes 9 php language-agnostic oop constructor

是否有理由在类的构造函数中设置变量值而不是在声明它们时?我意识到如果你在声明它们的时候尝试设置它们就不能将数据传递给变量,但是那些总是相同的事情(我要求'总是'是一个艰难的主张)?

class variables_set_outside_constructor
{
     private $admin_name = 'jeff';
     private $current_working_directory = get_cwd();

     function __construct() {}
}
Run Code Online (Sandbox Code Playgroud)

与此相反:

class variables_set_inside_constructor
{
     private $admin_name;
     private $current_working_directory;

    function __construct()
    {
         $this->admin_name = 'jeff';
         $this->current_working_directory = get_cwd();
    }
}
Run Code Online (Sandbox Code Playgroud)

构造函数中的设置值与声明它们时的优缺点有哪些?我对任何与语言无关的方面都很好奇.

Wes*_*orp 2

第一个原因:可重用性。

第二个原因:数据库连接的凭据不属于数据库类,这应该在您的应用程序中处理。你的类应该只知道如何接受和使用它们——而不是定义它们。

一个很好的例子是您development machinestaging/live machine. 这会立即向您展示在构造函数中声明的问题。


在您发表评论之前,我没有注意到尝试是什么。我想我已经不习惯看到var了。幸运的是我不是唯一的一个。当然,这样宣称是不可能的。