我只是学习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 : "";
}
像这样。我真的很想知道。
答案 0 :(得分:2)
将参数保持为NULL将使函数运行,即使在函数调用期间未传递所有参数。
例如,如果一个函数需要3个参数而你只提供了2个,而在函数定义中第三个参数没有被赋值为NULL,那么该函数将抛出一个错误。
答案 1 :(得分:1)
这是一个具有默认值的构造函数。如果参数未传递给_construct方法,它将为变量分配NULL值。所以这意味着没有必要将参数传递给这个构造函数。
答案 2 :(得分: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');
这些所有初始化都是有效的。