我想在类结构中使用这样的东西:
$public $choice;
function __construct(){
$this->set_login($this->choice);
}
private function set_login($this->choice){
if($this->choice=='2'){
// don't set login credentials
}else{
// set login credentials
}
}
上面的代码要求在每次初始化类之前设置$ choice。 但我想将$ choice设置为可选参数。 我想如果在任何页面中,我这样称呼:
$login = new login();
该类将正常设置登录凭据,但如果这样调用:
$login = new login();
$login->choice = 2;
然后将不会设置登录凭据。
我不确定这个类是否会以这种方式执行,因为只要我初始化类,就会调用__construct方法并在那时设置$ choice。但是如果我在初始化后设置$ choice,那么代码是否可以工作?
如何在oop中使参数可选?
答案 0 :(得分:0)
只需将方法set_login
定义为:
public function set_login($choice = 1) {
if ($choice == 2) {
// don't set login credentials
} else {
// set login credentials
}
}
并使用它:
$login = new login();
// Login.
$login->set_login();
// Doesn't login.
$login->set_login(2);
修改强>
另一种解决方案:
private $choice;
function __construct($choice = false) {
$this->set_login($choice);
// If you want to remember the choice, you can save it in a property:
$this->choice = $choice;
}
private function set_login($choice) {
if ($choice == 2) {
// don't set login credentials
} else {
// set login credentials
}
}
请注意,以下代码永远不会按预期工作,因为您在构造函数中执行方法set_login
后更改了选择的值:
$login = new login();
$login->choice = 2;