[英]PHP can't find a function in my class
我有一個正在被調用的類,由於某種原因,我找到的一個功能被找到了,而另一個卻沒有。 這是我的代碼:
<?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的名稱更改為其他名稱時,找不到將其重命名為的functoin。 另外,當我擺脫報價,查詢和准備等能夠找到的功能時,php仍然能夠找到它們,我使用var_dump與功能存在進行了測試。 我嘗試重新啟動apache,重新啟動Windows7。我正在使用php 5.3.1。
關於如何調試還有其他想法嗎? 我似乎也無法找到如何通過編輯php.ini文件來使錯誤日志正常工作的方法。
您可能正在實現PHP的預構建PDO Object 。 您是否嘗試過直接使用名稱空間路徑實例化對象? 例如
$foo = new LMVC\Database\PDO;
否則,PHP可能會實例化其自己的名為PDO的對象,該對象位於根名稱空間中。
如果您包含定義此類的文件,並且未在實例化此類的文件中指定名稱空間,則PHP僅會在定義該類的文件執行期間將聲明的名稱空間視為有效。 在該包含文件之外,它將使用名稱空間回退來聲明全局對象。
由於PDO是現有的全局對象,因此應該重命名您的類(也許是myPDO?),以避免將來出現此類混亂。
您是否嘗試過重命名課程? 可能是您的代碼實際上正在嘗試使用PHP的內置PDO對象。
我還沒有使用名稱空間,但是我敢打賭,您是在初始化普通的PDO對象,而不是您在名稱空間中定義的對象。
在初始化類時是否設置了正確的名稱空間?
請記住,名稱空間語句僅對當前文件有效。
將您的PDO類重命名為PDOImplementation之類的名稱,然后重試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.