我正在研究crud操作。我的代码工作正常,但是当我添加命名空间时它不工作。然后我调试代码以找出问题所在。 我拿了一个文件,其中数据库连接代码写在构造函数中,文件是DbConfig.php。 在该文件中添加命名空间并在DbConfig.php中创建类的对象并尝试运行该文件 " $ this-> connection = new PDO(" mysql:host = localhost; dbname = crudOperation",' root',' root'); "在这一行之后它不起作用(我用echo"嗨")检查它。
<?php
namespace Foo;
class DbConfig
{
private $host = 'localhost';
private $username = 'root';
private $password = 'root';
private $database = 'crudOperation';
public $connection;
public function __construct()
{
if (!isset($this->connection)) {
try{
echo "Hi";
$this->connection = new PDO("mysql:host=localhost;dbname=crudOperation",'root', 'root');
echo "Hi";
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Hi";
return $this->connection;
} catch(PDOException $e) {
die("Failed to connect with MySQL: " . $e->getMessage());
}
} else{
echo "Connection failed";
}
}
}
$abc= new DbConfig();
答案 0 :(得分:0)
PHP中的命名空间是相对的。因此,如果您在一个名称空间内,那么该名称空间之外的任何内容都需要绝对引用。
class Global {}
namespace A { class Foo {} }
namespace B { class Bar {} }
namespace B\C { class Baz {} }
namespace B
{
\Global::doIt(); //Absolute
\A\Foo::doIt(); //Absolute
Bar::doIt(); //Relative
\B\Bar::doIt(); //Absolute
C\Baz::doIt(); //Relative
\B\C\Baz::doIt(); //Absolute
}