gpt4 book ai didi

php - 如何避免使用 PHP 全局对象?

转载 作者:可可西里 更新时间:2023-11-01 13:04:23 25 4
gpt4 key购买 nike

我目前正在创建博客系统,我希望将来能将其变成一个完整的 CMS。

有两个类/对象对于全局访问很有用(mysqli 数据库连接和一个检查用户是否登录的自定义类)。

我正在寻找一种不使用全局对象来执行此操作的方法,并且如果可能的话,不在每次调用对象时都将对象传递给每个函数。

最佳答案

您可以将对象设为静态,然后您就可以在任何地方访问它们。示例:

myClass::myFunction();

这将适用于脚本中的任何地方。但是,您可能想要阅读静态类,并可能使用 Singleton 类在静态对象内创建一个可在任何地方使用的常规类。

展开

我认为您尝试做的与我对我的数据库类所做的非常相似。

class myClass
{
static $class = false;
static function get_connection()
{
if(self::$class == false)
{
self::$class = new myClass;
}
return self::$class;
}
// Then create regular class functions.
}

获得连接后,使用 $object = myClass::get_connection(),您将能够正常执行任何功能。

$object = myClass::get_connection();
$object->runClass();

展开

完成静态声明后,您只需调用 get_connection 并将返回值分配给变量。然后其余的函数可以具有与您使用 $class = new myClass 调用的类相同的行为(因为我们就是这样做的)。您所做的只是将类变量存储在静态类中。

class myClass
{
static $class = false;
static function get_connection()
{
if(self::$class == false)
{
self::$class = new myClass;
}
return self::$class;
}
// Then create regular class functions.
public function is_logged_in()
{
// This will work
$this->test = "Hi";
echo $this->test;
}
}

$object = myClass::get_connection();
$object->is_logged_in();

关于php - 如何避免使用 PHP 全局对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1148068/

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