使用命名空间

时间:2017-12-04 13:32:49

标签: php

我正在尝试从另一个文件创建一个类的对象。两个文件都位于同一个文件夹中。我在两个文件中都使用了'namespace App'。在登录文件中,我正在尝试获取类对象,但无法找到该类。代码如下。

数据库类:'Database.php'

<?php
    namespace App;

    require_once 'config.php'; 

class Database{

    private $db;

    public function __construct(){

        $this->db =  new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    }

    public function getConnection(){

        return $this->db;

    }

login.php文件:

<?php

    namespace App;

    use App\Database; 

    require_once 'config.php'; 


    $DB = new Database(); 

    $con = $DB->getConnection;

当我执行login.php时,它显示致命错误:未捕获错误:第10行的login.php中找不到类'App \ Database'

3 个答案:

答案 0 :(得分:2)

  • 如果您在根命名空间中:

use \App\Database;您想告诉PHP在命名空间根目录中搜索App命名空间,如果它在哪里。

  • 如果您在App命名空间:

use Database;您想告诉PHP在当前命名空间中搜索Database,如果它在哪里。

  • 如果您在另一个名称空间中:

如果您在另一个命名空间(例如\Blob)中,则从根\App\Database引用,如上所述。

namespace App;

use App\Database; 

目前正在寻找\ App \ App \ Database,因此告诉您App\Database名称空间中找不到\App

答案 1 :(得分:2)

我认为您缺少要求数据库文件。此外,通过以下方式调用该方法。您正在调用不可用的属性getConnection。

<?php
namespace App;
require_once 'config.php';
require_once 'Database.php';

use App\Database;

$DB = new Database();
$con = $DB->getConnection();

答案 2 :(得分:0)

如果您在以下位置引用命名空间:

namespace App;

您无需在“使用&#39;。

中包含命名空间
namespace App;
use Database;