Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您应该在PHP中使用全局类吗_Php - Fatal编程技术网

您应该在PHP中使用全局类吗

您应该在PHP中使用全局类吗,php,Php,我正在做一个项目,下面是我的编码实践 我在config中加载所有类文件 我在配置中创建了一个重要类的实例,即$database=newdatabase。非重要类在页面中创建。 在页面中,我只使用$database->query获取数据。 在函数内部,我调用global$数据库并从那里获取它。 这种做法正常吗?气馁?鼓励?在处理大型项目时,您会实现哪种代码结构方法?不要启动您可能不使用的类,只有这些类是您肯定会使用的。用于其他用途功能。如果将方法设置为静态,则不需要传递引用 class Datab

我正在做一个项目,下面是我的编码实践

我在config中加载所有类文件 我在配置中创建了一个重要类的实例,即$database=newdatabase。非重要类在页面中创建。 在页面中,我只使用$database->query获取数据。 在函数内部,我调用global$数据库并从那里获取它。
这种做法正常吗?气馁?鼓励?在处理大型项目时,您会实现哪种代码结构方法?

不要启动您可能不使用的类,只有这些类是您肯定会使用的。用于其他用途功能。

如果将方法设置为静态,则不需要传递引用

class Database {
    static function query($...) {...}
    ...
}

您可能仍然希望构造函数启动连接,但一旦完成,您就可以简单地调用Database::query…

我建议使用类似Singleton的方法。和可能重复。很抱歉提出一个问题,我想这里的每个人都在上面。我不明白为什么这个问题会被否决。我相信很多php程序员在某些时候都会遇到这个问题。以更详细的方式回答这个问题:您可以使用[static class][1]或[singleton][2]来避免处理全局变量。[1] :[2]:哇,真希望我以前知道自动加载。如果答案有帮助的话,欢迎接受。很明显,这叫做单例类。直到我读到Adam对XD问题的评论,我才知道数据库类创建了一个新的MySQLi对象。。我不想每次执行查询时都创建对象并连接它。这就是为什么我只创建一次,然后在整个执行过程中重用它,而不实际通过引用传递对象的原因。这就是我试图解释的。保留构造函数并在代码开始时调用新数据库一次,然后使用Database::query。