Ошибка автозагрузки пространства имен в другом пространстве имен - PullRequest
0 голосов
/ 24 мая 2019

Я получаю приведенную ниже ошибку при попытке вызвать 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;
      }
    }
  }

composer.json

{
  "autoload":{
    "psr-4":{
      "":"app",
       "App\\":"app"
    }
}

}

Неустранимая ошибка: необнаруженная ошибка: класс 'm_newEmployee' не найден в C: \ xampp \ htdocs \ task \ app \ controller \ c_index.php: 16 стековtrace: # 0 C: \ xampp \ htdocs \ task \ index.php (14): app \ controller \ c_index-> ​​loadEmployees () # 1 {main}, брошенный в C: \ xampp \ htdocs \ task \ app \ controller \c_index.php в строке 16

1 Ответ

0 голосов
/ 24 мая 2019

Импорт пространства имен (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();
...