无法在构造函数中为公共属性赋值

问题描述 投票:0回答:1
<?php 
$login1 = new Login("cam", "1234"); echo "<br>";
echo $login1->authenticate($login1->name, $login1->this->password);

class Login{
     public $name;
     public $password;

    function Login($u, $w){
        $this->name = $u;
        $this->$password = $w;
    }

    function authenticate($name, $password){
        $lookupusername = "cam"; 
        $lookuppassword = "1234";
        if($name == $lookupusername && $password == $lookuppassword){
            return "Login Success";
            echo "Login Success";
        }   else {
                return "Login Fail";
                echo "Login Fail";
            }
    }
}
?>

我是 PHP 新手。我想知道为什么我的登录类中的构造函数没有将字符串文字设置为该类的名称和密码属性。我尝试了 set() 方法,但也不起作用。我还尝试将字符串文字分配为变量并通过引用传递它们。没有。我哪里错了?

php class object authentication constructor
1个回答
3
投票

PHP 构建构造函数的方式与 Java 不同(这就是您的示例所基于的方式)。您需要使用 PHP 的

__construct
方法,如下所示:

public function __construct($u, $w) {
    $this->name = $u;
    $this->password = $w;
}

此外,您访问

name
属性的方式是正确的,但
password
是不正确的。使用
$this->password
代替
$this->$password
,使用
$login1->password
代替
$login1->this->password

© www.soinside.com 2019 - 2024. All rights reserved.