gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:51:28 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com