Ruby语法与PHP类构造函数语法?

时间:2014-04-30 21:02:38

标签: php ruby constructor

在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;
  }
}

2 个答案:

答案 0 :(得分:3)

  

这种方法有什么好处?

您可以将它们从public更改为private,然后您可以使用静态值对其进行初始化。

  

ruby​​函数初始化和php函数__construct之间是否有区别?

是的,他们非常不同。它们并不具有可比性; Ruby和PHP的对象模型太不同了。

答案 1 :(得分:2)

通常,在成员函数之外定义类成员变量可以带来一些好处。

它们清楚地表明什么是意图成为成员变量。这不容小觑。其他开发人员,甚至是5个月内的自己,都想知道成员变量是什么。如果必须通过类的成员函数进行搜索,则可能会错过变量。在任何情况下,都需要更长的时间才能找到。

此外, IDE 将使用的任何代码完成,如果 可能会选择成员变量在构造函数中声明。

最后,您可以覆盖构造函数。在这种情况下,这些成员变量可能可用。

来自@meager:一个重要的; "您可以将它们从公共更改为私有,并且可以使用静态值对它们进行初始化。"