function login()自动运行

时间:2014-05-22 08:43:30

标签: php compiler-errors

我得到了这个项目,我在php中构建,我遇到了一个奇怪的错误。这不是我正在寻找的解决方案,而是错误的原因,因为我已经找到了解决方案(我不喜欢)。

我构建了一个OOP php项目。当我在类登录{}中使用函数login()时,它会在编译加载页面时自动运行,但是当我将函数重命名为login2()时它不会。我没有在启动的任何地方调用该函数,它应该在用户单击登录按钮时调用。

//code example
class Login extends Page{
    public function login(){                //This function causes problems. 
        $result = $this->data->runQuery(SELECT * FROM users WHERE name = ?);
        //use result
    }
}

class Page{
    protected $data;
    public function __construct($data){
        $this->data = $data;
    }
}

//Index.php contains this.
$data = new DatabaseConnection($ip, $username, $pass, $db); //sets up a dbcon.
$login = new Login($data);              //add database object to Login object.

//Fatal error: Call to a member function runQuery() on a non-object in Login.php

这是我的代码的缩短版本我不会在任何地方调用函数login(),但它仍然在php加载页面时编译。但是,如果我将函数重命名为除login()或LOGIN()以外的任何函数,它不会导致任何问题,它甚至可以在以后调用它时起作用。

所以我的问题是否有人知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

因为它来自类的构造函数

public function login(){   }

因此,当您实例化类login时,它将查找构造函数,因为您具有公共函数login(),它将成为您的类构造函数,因此它被调用。

请在此处详细了解

http://www.php.net/manual/en/language.oop5.decon.php