如何使用composer.json自动加载?

时间:2018-09-16 11:53:58

标签: php composer-php autoload composer.json

我在项目目录的根文件夹(在index.php中)中使用这些require语句。

require("./models/college/collegeModel.php");
require("./routes/routes.php");
require("./controllers/college/collegeController.php");
require("./controllers/home/homeController.php");
require("./controllers/login/loginController.php");
require("./controllers/logout/logoutController.php");
require("./controllers/public/publicController.php");
require("./lib/util.php");

现在我正在尝试使用composer自动加载功能,通过使用composer.json文件删除其中所有上述要求,并使用一个来自动加载:

require("./vendor/autoload.php"); 

我的composer.json文件如下

{
    "name": "vermajnv/web",
    "authors": [
        {
            "name": "vermajnv",
            "email": "nayanrahul.jnv@gmail.com"
        }
    ],
    "require": {},
    "autoload": {
        "classmap": ["models/college", "controllers/college", 
"controllers/home", "controllers/login", "controllers/logout", 
"controllers/public", "lib/", "routes/"]
    }
}

如果删除“ lib /” “ routes /”

,效果很好

请为我提供此问题的适当解决方案,谢谢大家。

1 个答案:

答案 0 :(得分:0)

哦,我做错了

实际上 util.php routes.php 不包含用于初始化 autoload_classmap.php

的类

我的util.php以前是这样的:

<?php

    public function baseUrl($url) {
        $contaxtPath = "/" . explode("/", $_SERVER['REQUEST_URI'])[1];
        return $contaxtPath . $url;
    }

    public function redirect($to) {
        $url = baseUrl($to);
        header("Location:" . $url, 302);
    }

现在,我将其包装为带有 static 方法的类,并且可以通过 HTMLutill ::

访问这些方法
<?php

    class HTMLutil {

// static method inside a class are visible every where without creating instance of class (HTMLutil) we can access it by HTML::baseUrl();
    public static function baseUrl($url) {
        $contaxtPath = "/" . explode("/", $_SERVER['REQUEST_URI'])[1];
        return $contaxtPath . $url;
    }

    public static function redirect($to) {
        $url = self::baseUrl($to);
        header("Location:" . $url, 302);
    }

}

现在我的应用程序运行正常。 快乐的编码人员。