PHP类范围

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP类范围脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我正在构建的应用程序中有几个类,我希望有一个访问其他一些成员函数,但我似乎无法做到.

一个类叫做MySQLDB:

class MysqLDB{
public $connection;

function __construct(){
//connects to database
}

function login($username,$password){
//queries database...
}
}

然后我有一个名为Session的类:

class Session{
//VARiables
//constructor

function PRocessLOGin($username,$password){
$database->login($username,$password);
}

然后我有两个类声明:

$database = new MysqLDB();
$session = new Session();

无论我把这些语句放在哪个类中,我仍然会得到同样的错误

PHP Notice:  Undefined variable: database in C:\inetpub\wwwroot\cmu\include\session.PHP on line 52
PHP Fatal error:  Call to a member function login() on a non-object in C:\inetpub\wwwroot\cmu\include\session.PHP on line 52

我已经看到一些建议,建议将新数据库对象放在Session类声明中,但我想避免这样做,因为我在代码中使用数据库类的其他几个地方而且我不想打开多个连接到数据库.

解决方法

由于您希望对全局设置变量具有访问权限,因此您可以使用全局变量访问它:

function processlogin($username,$password){
    global $database;
    $database->login($username,$password);
}

或者使用变量作为构造函数的参数,并记住类Session中的数据库对象引用:

class Session{

    private $database;

    function __construct($database){
        $this->$database = $database;
    }

    function processlogin($username,$password){
        $this->database->login($username,$password);
    }

}

然后你打电话

$database = new MysqLDB();
$session = new Session($database);

这很方便,如果你使用更多的函数后,还需要访问数据库对象.

脚本宝典总结

以上是脚本宝典为你收集整理的PHP类范围全部内容,希望文章能够帮你解决PHP类范围所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。