我使用Composer自动加载器(PSR-4)在我需要的时候加载我的类.当我从另一个类(如控制器的模型)内部调用一个类时,我遇到了一个问题.
当我需要自己调用类时,它工作得很好,但当我try 从一个类内部调用另一个类时,它似乎不起作用.
我的Composer.json为自动加载提供了以下内容:
"autoload": {
"psr-4": {
"WhizzKids\\Controller\\": "controllers/",
"WhizzKids\\Model\\": "models/"
}
},
我的控制器被称为类似于$AccountsController = new WhizzKids\Controller\AccountsController();
,该文件中的代码是:
<?php
namespace WhizzKids\Controller;
class AccountsController {
private $AccountsModel;
public function __construct() {
$this->AccountsModel = new WhizzKids\Model\AccountsModel();
}
public function getAccounts() {
return $this->AccountsModel->getAccounts();
}
}
在这个控制器中,我试图调用我的模型,该模型包括从数据库获取数据的逻辑.模型中的代码为:
<?php
namespace WhizzKids\Model;
class AccountsModel {
private $conn;
public function __construct() {
$this->conn = mysqli_connect($_ENV['DB_SERVER'], $_ENV['DB_USER'], $_ENV['DB_PASSWORD'], $_ENV['DB_DATABASE']);
if (!$this->conn) {
die("Connection failed: " . mysqli_connect_error());
}
}
public function getAccounts() {
$sql = 'SELECT * FROM accounts';
$result = mysqli_query($this->conn, $sql);
$accounts = [];
if(mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$accounts[] = $row;
}
}
mysqli_close($this->conn);
return $accounts;
}
}
When I try to load the view that uses this on the front-end i get the following error:
正如您在错误消息中看到的,它似乎将先前的名称空间添加到子名称空间中,不确定我在哪里出错了?(还可以进行任何改进)