php - 如何从自定义命名空间内访问 PHP 内部类

标签 php namespaces

如何从命名空间内访问标准内部类?

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/

相关文章:

php - 比较不同领域的日期和时间

php - PHP 应用程序的可扩展性

php - 提交总是得到最后一个值

php - 在 MYSQL 中创建表不起作用

python - 使用 python 的 debhelper 不部署命名空间包

c++ - 有没有一种方法可以指定枚举类值,而不必每次都键入其范围?

jquery - 避免污染 jQuery 命名空间的最佳插件开发实践?

java - 显示关于 https 重定向的消息

xslt - 如何为有效负载 xsl 设置命名空间前缀

php - 如何从在 PHP 中使用自动加载加载的类中捕获异常?