代码之家  ›  专栏  ›  技术社区  ›  Andrew

编写器自动加载类不工作

php
  •  0
  • Andrew  · 技术社区  · 8 年前

    我有这样的项目结构。

        ├───app
        │   ├───config
        │   ├───controllers
        │   ├───libraries
        |   |       Controller.php
        │   │       Core.php
        │   │       DB.php
        │   ├───models
        │   └───views
        └───vendor
            └───composer
             autoload.php
    

    我想从库文件夹加载类。

    我有一个名为 bootstrap.php 包括 autoload.php 文件和命名空间的使用

    引导程序.php

    require_once __DIR__ . '/../vendor/autoload.php'; 
    
    use Libs\DB;
    use Libs\Core;
    use Libs\Controller;
    

    index.php 文件,我没有从任何类获得任何输出。类名与文件名相同,并且具有构造函数

    示例DB.php

    namespace Libs;
    
    class DB {
    
        public function __construct() {
            die("Hello");
        }
    }
    $db = new DB();
    

    这就是composer.json的样子

    {
        "autoload": {
            "psr-4": {
                "Libs\\" : "app/libraries/"
            }
    
        }
    }
    

    最后是index.php文件

    require_once '../app/bootstrap.php';
    

    我搞不懂为什么没用,你能帮帮我吗,我做错了什么?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Nima    8 年前

    发生这种情况是因为没有创建所定义类的任何对象,因此不会触发包含类定义文件的机制。我想你应该 use 语句触发此机制以包含这些文件,但这不是它的工作方式。如果您尝试创建这些类的对象,您将看到正在调用的构造函数。所以在你的 index.php 添加以下内容:

    $db = new \Libs\DB;
    $core  = new \Libs\Core;
    $controller = new \Libs\Controller;
    

    以查看对象的创建是否正确。

    推荐文章