gpt4 book ai didi

PHP 全局对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:05 24 4
gpt4 key购买 nike

我有一个单例模式数据库对象,我想声明一次以在系统内使用。我有一个主包含文件,它提供所有单独的类文件,还生成一些全局变量。

这是包含文件:

<?php
// Main API. We want to include everything here and then make some Global Vars:
require_once('database.class.php');

// Create the DB here:
$database = Database::Singleton();

require_once('user.class.php');
require_once('settings.class.php');

// Start the session:
session_start();
?>

理论上,$database 应该是一个全局变量,可以被其后包含的任何内容访问(即 user.class.phpsettings.class.php。但是,当我尝试从 User 类调用 Database 类中的方法时,如下所示:

$result = $database->FetchObject($queryString);

我收到以下错误:

fatal error :在 C:\Program Files (x86)\EasyPHP-5.3.4.0\www\PC Estimating\classes\user.class.php 中的非对象上调用成员函数 NumRows()在第 122 行

有人能帮忙吗?

最佳答案

如果您尝试从类的方法内部使用 $database 对象,则必须使用 global 关键字,因此$database 变量在方法中可见:

class User {
function myMethod() {
global $database;

// Work with $database

}
}


有关更多信息,请查看 Variable scope手册的一部分。


另一个 (更好) 解决方案,考虑到您使用的是单例,是从单例中获取该对象:

class User {
function myMethod() {
$database = Database::Singleton();

// Work with $database

}
}

关于PHP 全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5418810/

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