【问题标题】:PHP Class assigning properties in constructorPHP类在构造函数中分配属性
【发布时间】:2014-08-21 03:50:18
【问题描述】:
<?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() 方法,但也没有用。我还尝试将字符串文字分配为变量并通过引用传递它们。没有。我哪里错了?

【问题讨论】:

  • 这个$this-&gt;$password是错误的,从$password中删除$
  • 还有这个$login1-&gt;this-&gt;password有错,改成$login1-&gt;password
  • 哦,好像是小错字。谢谢。

标签: php class object login constructor


【解决方案1】:

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

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

另外,您访问name 属性的方式是正确的,但password 是不正确的。使用$this-&gt;password 代替$this-&gt;$password,使用$login1-&gt;password 代替$login1-&gt;this-&gt;password

【讨论】:

  • 还有一件事:我做构造函数的时候,默认的构造函数还能用吗?如果是这样,我如何禁用没有参数的对象?
  • @Cameronc56 - 它不能正常工作(你会收到警告);你可以做的是使用默认参数(function __construct($a = null, $b = null) {
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多