gpt4 book ai didi

PHP 在我的类中找不到函数

转载 作者:行者123 更新时间:2023-12-04 16:54:02 25 4
gpt4 key购买 nike

我有一个被调用的类,由于某种原因,我找到了一个函数,但另一个没有。这是我的代码:

<?php


namespace LMVC\Database;

class PDO
{
private static $instance = NULL;

public static function setup($dsn, $username, $password)
{
try {
self::$instance = new \PDO($dsn, $username, $password);
}
catch(PDOException $e) {
throw new Exception("Error: " . $e->getMessage());
}
}

public static function getInstance()
{
if(self::$instance === NULL) {
throw new Exception("Database is not instantiated");
}

return self::$instance;
}

public function query($sql)
{
if(self::$instance === NULL) {
throw new Exception("Database is not instantiated");
}

try {
return self::$instance->query($sql);
}
catch(PDOException $e) {
throw new Exception("Error: " . $e->getMessage());
}
}

public function fetchAll($stmt)
{
if(self::$instance === NULL) {
throw new Exception("Database is not instantiated");
}

try {
return self::$instance->fetchAll($stmt);
}
catch(PDOException $e) {
throw new Exception("Error: " . $e->getMessage());
}
}

public function prepare()
{

}

public function quote()
{

}
}

除了 fetchAll 之外的所有函数都可以找到,而 fetchAll 则不是。我似乎也无法添加存在的功能。当我将 fetchAll 的名称更改为其他名称时,它找不到我将其重命名为的函数。此外,当我摆脱了能够找到的函数(如引用、查询和准备)时,php 仍然能够找到它们,我使用 var_dump 和函数存在进行了测试。我尝试重新启动 apache,重新启动 Windows 7。我使用的是 php 5.3.1。

关于如何调试的任何其他想法?我似乎也无法通过编辑我的 php.ini 文件来找出如何使错误日志正常工作。

最佳答案

您可能正在实现 PHP 的预构建 PDO Object .您是否尝试过使用命名空间路径直接实例化您的对象?例如

$foo = new LMVC\Database\PDO;
否则,PHP 可能会实例化它自己的名为 PDO 的对象,该对象位于根命名空间中。
编辑更多信息
如果你包含定义这个类的文件,并且你没有在实例化这个类的文件中指定命名空间,那么 PHP 只会认为声明的命名空间在定义该类的文件的执行过程中有效。在该包含文件之外,它将使用 namespace fallback声明全局对象。
您应该,因为 PDO 是一个现有的全局对象,重命名您的类(也许是 myPDO?)以避免将来出现这种混淆。

关于PHP 在我的类中找不到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2000820/

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