如何从命名空间内访问标准内部类?
namespace foo;
class Bar{
public function __construct(){
$connect = new \PDO('mysql:host='.$host.';dbname='.$name, $user, $pass);
}
}
我收到错误
failed to open stream PDO.php
我有适用于我的自定义类的自动加载器代码。如何让自动加载器忽略内部类?
我指的是此链接,我的代码基于该链接:
http://www.php.net/manual/en/language.namespaces.faq.php#language.namespaces.faq.globalclass
编辑:
所以如果我放这样的东西,它似乎工作得很好。但如果我不能在自己的类(class)中使用它,那还有什么意义呢?如何根据类属性使参数动态化?
namespace foo;
$connect = new \PDO('mysql:host='.$host.';dbname='.$name, $user, $pass);
class Bar{
public function __construct(){
//$connect = new \PDO('mysql:host='.$host.';dbname='.$name, $user, $pass);
}
}
最佳答案
一些建议
首先是将 PDO 文件直接包含在您的类中。我知道这很令人厌恶,但有时是必要的。
第二个选项是首选。在其他地方创建 PDO 实例,然后将实例传递给类。如果您这样做,以后会减少困惑,因为您只会创建连接一次,而不是多次。
namespace foo;
use PDO;
class Bar{
/** @var \PDO */
protected $pdo;
public function __construct(){
$this->pdo = new PDO('mysql:host='.$host.';dbname='.$name, $user, $pass);
}
}
关于php - 如何从自定义命名空间内访问 PHP 内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19647449/