PHP benim sınıf bir işlevi bulamıyorum

4 Cevap php

Aradım oluyor ve nedense işlevlerinden biri için ben buldum ediliyor gelmiş bir sınıf var, ama diğeri değil. İşte benim kod:

<?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 hariç tüm fonksiyonlar bulunabilir edebiliyoruz, ama fetchAll değildir. Ben de var fonksiyonlar eklemek için görünmüyor olabilir. Başka bir şey için fetchAll adını değiştirmek zaman ben yeniden adlandırmak functoin bulamıyorum. Ben alıntı, sorgu gibi bulunabilir edebiliyoruz fonksiyonların kurtulmak ve hazırlamak olsun Ayrıca, php hala onları bulmak mümkün, ben işlevi var ile var_dump kullanarak test. Ben windows 7 başlatmadan, yeniden başlatmadan apache denedim. Ben php 5.3.1 kullanıyorum.

Hata ayıklama konusunda herhangi bir diğer fikir? Ben de benim php.ini dosyasını düzenleyerek işe hata günlüğünü almak nasıl bulmak gibi olamaz.

4 Cevap

Muhtemelen PHP'nin önceden oluşturulmuş uygulamaktadır PDO Object. Eğer ad yolu ile doğrudan nesnenin örneğini denediniz mi? örneğin

$foo = new LMVC\Database\PDO;

Aksi takdirde, PHP kök ad olan PDO, adında kendi nesnesinin örneğini olabilir.

EDIT FOR MORE INFO

Bu sınıf tanımlar dosyasını dahil, ve bu sınıfını başlatır dosyasında ad belirtmek istemiyorsanız, o zaman PHP sadece ilan ad söyledi sınıfını tanımlayan dosyasının yürütülmesi sırasında geçerli olmak üzere dikkate alınacaktır. Dosyayı içeren Bunun dışında, bu namespace fallback, genel nesneyi bildirmek için kullanacağız.

PDO varolan global nesne olduğundan, gelecekte karışıklık bu tür önlemek için sizin sınıf (belki myPDO?) Yeniden adlandırmak gerekir.

Eğer sınıfını yeniden adlandırma denediniz mi? Bu kodu aslında PHP'nin yerleşik PDO nesnesi kullanmaya çalışıyor olabilir.

Ben henüz ad alanları ile çalıştı değil, ama normal bir PDO nesnesi değil, sizin ad tanımladığınız bir başlatılıyor bir bira bahse girerim.

Sınıfınızı başlatırken doğru ad kuruyorsanız?

Ad tablolar, sadece mevcut dosya için geçerli olduğunu unutmayın.

PDOImplementation gibi başka bir şey için PDO sınıfını yeniden adlandırın ve tekrar deneyin.