簡體   English   中英

PHP在我的課程中找不到函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM