【问题标题】:OOP parameter values equal to nullOOP 参数值等于 null
【发布时间】:2023-04-09 02:24:01
【问题描述】:

我刚开始学习 OOP。到目前为止,我已经阅读了很多文章并尝试了一些教程。我只是想知道为什么在构造函数上声明参数时,一些值应该为空。

    function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL)
    {
        $this->hostname = !empty($hostname) ? $hostname : "";
        $this->username = !empty($username) ? $username : "";
        $this->password = !empty($password) ? $password : "";
        $this->database = !empty($database) ? $database : "";
    }

像这样。我真的很想知道。

【问题讨论】:

  • ($hostname = NULL, $username = NULL, $password = NULL, $database = NULL) 这用于在创建类的对象且参数未创建时将值传递给变量届时将在其中提供 null 值并创建对象

标签: php oop methods constructor null


【解决方案1】:

将参数保留为 NULL 将使函数运行,即使在函数调用期间未传递所有参数。

例如,如果一个函数需要 3 个参数,而您只提供了 2 个,并且在函数定义中第三个参数未分配为 NULL,则该函数将引发错误。

【讨论】:

  • 有道理。谢谢。我会在 10 分钟后接受这个。这次无法接受。
【解决方案2】:

我只是想知道为什么在构造函数上声明参数时 值应为空。

这些必须为空。

它们作为default value for the parameter 无效。比如你在例子中给出的函数,可以通过以下五种方式之一调用:

  1. 没有参数
  2. 使用 $hostname
  3. 使用 $hostname, $username
  4. 使用 $hostname、$username、$password
  5. 使用 $hostname、$username、$password、$database

需要注意的是,不能使用 $hostname、$password 调用函数并让函数假定默认值 $username。

【讨论】:

  • 啊,我明白了。我不好说。因为我看到文章是这样做的。不是因为它是必需的,而是为了良好的实践,我猜。
【解决方案3】:

这是一个具有默认值的构造函数,如果参数没有传递给 _construct 方法,它将为变量分配 NULL 值。所以这意味着它不需要向这个构造函数传递参数。

【讨论】:

    【解决方案4】:

    这个语法是为了方便你在不传递任何参数的情况下启动类

    function __construct($hostname = NULL, $username = NULL, $password = NULL, $database = NULL)
    

    这个签名告诉你可以选择传递参数假设你的Class A{}有这个构造函数,你可以选择通过以下方式启动它

    $t = new A();
    $t1 = new A('locathost','user1','pw1', $db_connection);
    $t2 = new A('localhost');
    

    所有这些初始化都是有效的。

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2021-10-06
      • 2015-02-06
      相关资源
      最近更新 更多