当我添加命名空间时,我的代码不会被执行

时间:2017-06-02 09:35:10

标签: php

我正在研究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();

1 个答案:

答案 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
}