php在使用命名空间时找不到类

php在使用命名空间时找不到类,php,Php,我正在尝试从另一个文件生成类的对象。这两个文件都位于同一个文件夹中&我在这两个文件中都使用了“namespace App”。在登录文件中,我试图获取类对象,但它找不到类。代码如下所示 数据库类:“Database.php” <?php namespace App; require_once 'config.php'; class Database{ private $db; public function __construct(){

我正在尝试从另一个文件生成类的对象。这两个文件都位于同一个文件夹中&我在这两个文件中都使用了“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;

    }
  • 如果您在根命名空间中:
use\App\Database
您希望告诉PHP在名称空间根中搜索
App
名称空间,如果它在那里的话

  • 如果您在
    应用程序
    命名空间中:
使用数据库
您希望告诉PHP在当前名称空间中搜索
数据库
,如果它在那里的话

  • 如果您在另一个命名空间中:
如果您在另一个名称空间(如
\Blob
)中,则从根目录引用
\App\Database
,如上所述


当前正在查找\App\App\Database,因此告诉您在
\App
命名空间中找不到
App\Database

  • 如果您在根命名空间中:
use\App\Database
您希望告诉PHP在名称空间根中搜索
App
名称空间,如果它在那里的话

  • 如果您在
    应用程序
    命名空间中:
使用数据库
您希望告诉PHP在当前名称空间中搜索
数据库
,如果它在那里的话

  • 如果您在另一个命名空间中:
如果您在另一个名称空间(如
\Blob
)中,则从根目录引用
\App\Database
,如上所述



当前正在查找\App\App\Database,因此告诉您在
\App
命名空间中找不到
App\Database

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

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

use App\Database;

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

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

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

use App\Database;

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

如果在中引用命名空间:

namespace App;
然后不需要在“use”中包含名称空间

namespace App;
use Database;

如果在中引用命名空间,请执行以下操作:

namespace App;
然后不需要在“use”中包含名称空间

namespace App;
use Database;

使用数据库
如果您与所使用的类位于相同的
\App
命名空间中。
使用数据库
如果您与您使用的类位于同一个
\App
名称空间中。因此,尽管我使用名称空间,但我必须始终要求文件发生事件?是的@MisbahAhmadIs有没有办法避免require?@MisbahAhmad是:如果您不想每次都使用require,请使用php的spl_autoload_register()函数自动调用class@MisbahAhmadSo,尽管我使用名称空间,但我必须始终要求文件事件?是的@MisbahAhmadIs有没有办法避免要求?@MisbahAhmad是:如果不想每次都使用require,请使用php的spl_autoload_register()函数自动调用class@MisbahAhmad