php - 在另一个命名空间中自动加载命名空间时出错
问题描述
m_newEmployee
尝试从中调用时出现以下错误c_index.php
。
我试过了:
$employee = new \App\model\newEmployee;
但这导致了另一个奇怪的错误m_newEmployee
。
当我这样做时,该函数getEmployees()
不能用于创建任何对象。
c_index.php
<?php
namespace app\controller;
use app\model;
require_once "../task/vendor/autoload.php";
/**
*
*/
class c_index
{
function loadEmployees()
{
$employee = new m_newEmployee;
echo $employee->getEmployees();
}
}
?>
m_newEmployee.php
<?php
namespace app\model;
require_once "../task/vendor/autoload.php";
/**
*
*/
class m_newEmployee
{
function createTable()
{
$database = new m_database;
$conn = $database->connect();
// sql to create table
$sql = "CREATE TABLE IF NOT EXISTS employees (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
employee VARCHAR(255) NOT NULL,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
//echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " . $conn->error;
}
$conn->close();
}
function createEmployee($employee)
{
$this->createTable();
$sql = "INSERT INTO `employees`( `employee`) VALUES ('$employee')";
if ($conn->query($sql) === TRUE) {
$result = true;
return $result;
} else {
echo "Error inserting " . $conn->error;
}
}
function getEmployees()
{
$database = new m_database;
$conn = $database->connect();
$sql = "SELECT * FROM `employees`";
if ($result = $conn->query($sql) === TRUE) {
//Initialize array variable
$dbdata = array();
//Fetch into associative array
while ( $row = $result->fetch_assoc()) {
$dbdata[]=$row;
}
//Print array in JSON format
return json_encode($dbdata);
}
else {
echo "Error inserting " . $conn->error;
}
}
}
作曲家.json
{
"autoload":{
"psr-4":{
"":"app",
"App\\":"app"
}
}
}
致命错误:未捕获的错误:在 C:\xampp\htdocs\task\app\controller\c_index.php:16 中找不到类“m_newEmployee”:16 堆栈跟踪:#0 C:\xampp\htdocs\task\index.php(14 ): app\controller\c_index->loadEmployees() #1 {main} 在第 16 行的 C:\xampp\htdocs\task\app\controller\c_index.php 中抛出
解决方案
导入命名空间 ( use app\model;
) 并不意味着您可以直接使用该命名空间中的模型。您需要指定命名空间(使用导入的短名称):
namespace app\controller;
use app\model;
// ...
$employee = new model\m_newEmployee();
或者直接导入模型:
namespace app\controller;
use app\model\m_newEmployee;
// ...
$employee = new m_newEmployee();
推荐阅读
- python - 从 AWS Lambda (Python) 连接到 IBM MQ(on-perm)
- python - Python,范围(),双循环,
- c++ - 将值作为参数传递时出现“类型名称不允许指定存储类”错误
- html - 我怎样才能让 Chrome 尊重“scroll-snap-stop:always”?
- c - 检查动态分配的二维数组中的相邻单元格
- javascript - 在后台表单字段中将数据传递给 post.php
- reactjs - @typeform/embed 打破 Gatsby Netlify 构建
- javascript - 如何附加 SVG
元素 - javascript - 打印数组javascript对象的数组
- python - 删除/编辑数据框中条目不符合条件的行