gpt4 book ai didi

php - 函数 login() 自动运行

转载 作者:行者123 更新时间:2023-12-02 10:54:51 24 4
gpt4 key购买 nike

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

我建立了一个 OOP php 项目。当我在类 Login{} 中有函数 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() 之外的任何内容,它不会导致任何问题,即使您稍后调用它也能正常工作。

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

最佳答案

因为它来了类的构造函数

public function login(){   }

所以当你实例化类 login它会寻找构造函数,因为你有公共(public)函数 login() 它将成为你的类构造函数,因此它被调用。

在此处阅读有关此的更多信息

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

关于php - 函数 login() 自动运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23801875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com