我想在类结构中出现这样的东西:
$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 中使参数可选?
只需将方法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;