2012-07-27 101 views
1

我只是学习OOP的新手。我已阅读了很多文章,并尝试了一些教程。我只是想知道为什么在构造函数中声明参数时应该忽略一些值。OOP参数值等于null

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 : ""; 
    } 

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

+2

($ hostname = NULL,$ username = NULL,$ password = NULL,$ database = NULL)当创建类的对象并且不提供参数时,它用于将值传递给变量时间将分配空值并创建对象 – Jalpesh 2012-07-27 05:49:59

回答

2

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

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

+0

是有意义的。谢谢。 10分钟后我会接受这个。无法接受这一次。 – 2012-07-27 05:51:07

+0

不客气,不用担心。 – asprin 2012-07-27 05:51:47

2

我只是想知道为什么在构造函数上声明一些参数 值应该是零。

这些是不是需要被禁止。

它们作为default value for the parameter被禁止。

  1. 不带任何参数
  2. 随着$主机名
  3. 随着$主机,$用户名
  4. 用:例如在例如通过你提供的功能,可以在五个方法之一被称为$主机名,用户名$,$密码
  5. 随着$主机名,用户名$,$密码,$数据库

一个需要小心,这不是可以调用的乐趣使用$ hostname,$ password设置,并让该函数使用$ username的默认值。

+0

啊,我明白了。我说这个不好。因为我看到了那些文章。不是因为这是必需的,而是为了好的实践,我想。 – 2012-07-27 05:54:10

1

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

1

这个语法是为了方便您启动类不传递任何参数

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'); 

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