Пространство имен php не может найти класс SQLite3
Я искал и прочитал много постов здесь относительно пространств имен 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
Неустранимая ошибка: класс "DataAccess\SQLite3Db\SQLite3" не найден в sqlite3_data_broker.php в строке...
Используя пространство имен, я могу ссылаться на членов класса, но не на класс SQLite3, заключенный в open()
функция. Если я удаляю пространство имен и ссылки на него, то есть вызываю класс брокера следующим образом: $the_db = new SQLiteBroker('K:\Path\To\Db\the_data.db')
, все отлично работает.
Есть что-то, что я пропускаю или не рассматриваю при упаковке класса SQLite3? Если до этого дойдет, я уберу пространство имен, хотя было бы неплохо иметь его.
Версия PHP 5.4.6.
1 ответ
Полное имя с глобальным префиксным оператором \
:
$this->db = new \SQLite3($this->db_pathname);