试图获取非对象php错误的属性

时间:2011-10-02 15:52:03

标签: php

  

可能重复:
  Call to a member function on a non-object - works localhost but not online

不知道如何解决这个问题,它的基本但无法找到解决方案。 我使用两个文件:connect.php和user.php。

connect.php中的

是一个Connect类:

class Connect{
var $logged;
function login($username, $password){
    ..more code..
    if($pass==$password){
        $this->logged=true;     // db connection is fine, this works
                                // checked it with echo $this->logged;
    }
}
}

当我从另一个文件中调用它时,user.php就像这样:

$user=new Connect;
$user->login();
echo $user->logged;      // ERROR  Trying to get property of non-object 

为什么这段代码不起作用,但它可以离线(本地)???

2 个答案:

答案 0 :(得分:2)

你有几个问题:

  1. 当您调用$user->login时,PHP假设您正在访问对象属性,而不是函数;您需要$user->login()(请注意()),这将调用该方法。
  2. 您的示例缺少}
  3. <强>演示:

    <?php
    
    class Connect{
        var $logged;
        function login($username, $password){
            $pass = 'test';
            if($pass == $password){
                $this->logged = true;
            }
        }
    }
    
    $user = new Connect;
    $user->login('test','test');
    print_r($user);
    
    ?>
    

    http://codepad.org/AVw0k9sY

    <强>输出:

    Connect Object
    (
        [logged] => 1
    )
    

    1true打印的内容。

答案 1 :(得分:0)

要从类外部访问类属性,您需要将其声明为“public”:

class Connect{
public $logged;