PHP - 使用命名空间创建 PDO 连接
Posted
技术标签:
【中文标题】PHP - 使用命名空间创建 PDO 连接【英文标题】:PHP - Create PDO Connection using namespace 【发布时间】:2019-09-23 21:13:46 【问题描述】:我有一个项目文件夹名称实用程序。 目录列表为:
- utilities
- tli
- database
Connection.php
index.php
Connection.php 是 PDOConnection。 代码是:
<?php
namespace app\tli\database;
use PDO;
use PDOException;
Class Connection
private $server = "mysql:host=localhost;dbname=ytsurumaru_hanwa_coil_v.2";
private $user = "root";
private $pass = "";
private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,);
protected $con;
public function openConnection()
try
$this->con = new PDO($this->server, $this->user, $this->pass, $this->options);
return $this->con;
catch (PDOException $e)
return "There is some problem in connection: " . $e->getMessage();
public function closeConnection()
$this->con = null;
更新源
现在,我需要 index.php 中的这个 Connection 实例
<?php
namespace app;
use app\tli\database\Connection;
use PDOException as PDOEx;
require('tli/database/Connection.php');
try
$connection = new Connection(); // not found
$connection->openConnection();
catch (PDOEx $e)
echo $e->getMessage();
当我运行它时,
D:\wamp64\www\utilities\tli>php index.php
Warning: require(tli/database/Connection.php): failed to open stream: No such file or directory in D:\wamp64\www\utilities\tli\index.php on line 8
Fatal error: require(): Failed opening required 'tli/database/Connection.php' (include_path='.;C:\php\pear') in D:\wamp64\www\utilities\tli\index.php on line 8
如何解决,我的命名空间有问题吗?
【问题讨论】:
你在 composer.json 中定义了命名空间吗?向我们展示来自 Composr 的自动加载器 我不使用 composer.json。怎么用? 或自定义自动加载器.. 你绝对可以在没有 Composer 的情况下使用命名空间。 好吧,正确的路径是:require('database/Connection.php'); 【参考方案1】:这还不足以访问您的数据库连接吗?
require 'tli/database/Connection.php';
然后,由于您位于不同的名称空间并且没有别名,因此您应该在“try catch 块”中:
$connection = new Connection(); // not found
执行以下操作:
$connection = new \tli\database\Connection();
确保设置正确的路径。
或
您可以像这样使用不同的名称:
namespace app;
require 'tli/database/Connection.php';
use tli\database\Connection as MyConnection;
$connection = new MyConnection();
【讨论】:
【参考方案2】:您需要使用其中的一个:
include('tli/database/Connection.php')
include_once('tli/database/Connection.php')
require('tli/database/Connection.php')
require_once('tli/database/Connection.php')
或者,如果您想要更多自动化,请使用 autoloader。 你可能想看看this SO question 和所有相关的东西。
【讨论】:
抱歉,从您的目录结构的描述来看,index.php 似乎在实用程序目录中。从错误消息看来,它位于 tli 目录中。所以正确的路径应该是database/Connection.php以上是关于PHP - 使用命名空间创建 PDO 连接的主要内容,如果未能解决你的问题,请参考以下文章