在Ruby中,我不会在构造函数之前定义变量。 PHP中的教程建议我这样做,虽然它似乎可以工作但我不这样做。
这种方法有哪些好处? Ruby函数initialize
和PHP函数__construct
之间是否有区别?
class ConnectToDatabase {
public $host;
public $user;
public $password;
public $database;
function __construct($host, $user, $password, $database) {
$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->database = $database;
}
}
答案 0 :(得分:3)
这种方法有什么好处?
您可以将它们从public
更改为private
,然后您可以使用静态值对其进行初始化。
ruby函数初始化和php函数__construct之间是否有区别?
是的,他们非常不同。它们并不具有可比性; Ruby和PHP的对象模型太不同了。
答案 1 :(得分:2)
通常,在成员函数之外定义类成员变量可以带来一些好处。
它们清楚地表明什么是意图成为成员变量。这不容小觑。其他开发人员,甚至是5个月内的自己,都想知道成员变量是什么。如果必须通过类的成员函数进行搜索,则可能会错过变量。在任何情况下,都需要更长的时间才能找到。
此外, IDE 将使用的任何代码完成,如果 , 可能会选择成员变量在构造函数中声明。
最后,您可以覆盖构造函数。在这种情况下,这些成员变量可能不可用。
来自@meager:一个重要的; "您可以将它们从公共更改为私有,并且可以使用静态值对它们进行初始化。"