php命名空间无法找到SQLite3类

时间:2014-02-27 21:27:28

标签: php sqlite namespaces wrapper

我在这里搜索并阅读了很多关于PHP命名空间和访问类成员的帖子。当包装在自定义类中并包含在名称空间中时,我仍然无法引用SQLite3类。示例如下:

sqlite3_data_broker.php

namespace DataAccess\SQLiteDb;

class SQLiteBroker {

    private $db, $db_pathname;

    public function __construct ($dbPathName) {
        $this->db_pathname = $dbPathName;
    }

    public function Open() {
        $this->db = new SQLite3($this->db_pathname);
    }


    public function getPathName() {
        return $this->db_pathname;
    }

}

some_other_class.php

include('sqlite3_data_broker.php');

$the_db = new \DataAccess\SqliteDb\SQLiteBroker('K:\Path\To\Db\the_data.db');

echo 'Database Full Name: ' . $the_db->getPathName();

$the_db->Open();

将产生以下结果:

数据库全名:K:\Path\To\Db\the_data.db

  

致命错误:在线上的sqlite3_data_broker.php中找不到类'DataAccess \ SQLite3Db \ SQLite3'

使用命名空间我可以引用类成员,但不能引用包含在open()函数中的SQLite3类。如果我删除命名空间并引用它,那就是调用代理类,如下所示:$the_db = new SQLiteBroker('K:\Path\To\Db\the_data.db'),一切正常。

在包装SQLite3类时,我是否缺少或没有考虑过? 如果它归结为它我会删除命名空间,虽然它会很好。

PHP Version 5.4.6。

1 个答案:

答案 0 :(得分:3)

具有全局前缀运算符\的全限定名称:

$this->db = new \SQLite3($this->db_pathname);

http://php.net/manual/en/language.namespaces.basics.php