资讯专栏INFORMATION COLUMN

composer自动加载配置

yiliang / 1672人阅读

摘要:就不多说了,是的包管理器,和的,的差不多里面有自动加载的配置,可以帮助我们自动加载我们的类我们通过来做路由演示首先安装创建个文件夹,我命名为了这个随便然后创建文件安装命令行进入文件夹后这样的话下好了,在根目创建文件然后命令行让服务跑起

composer就不多说了,是php的包管理器,和node.js的npm,python的pip差不多
composer里面有自动加载的配置,可以帮助我们自动加载我们的类
我们通过slim来做路由演示

首先安装slim

创建个文件夹,我命名为了modernroute(这个随便)
然后创建composer.json文件
安装slim,命令行进入文件夹后

composer require slim/slim "^3.0"

这样的话slim下好了
,在根目创建index.php文件

get("/",function(){
    echo "is mine";
});

$app->run();

然后命令行

php -S localhost:8000

让服务跑起来;
如果我们在slim中创建了路由,希望由controller中的方法执行,而不是像这样通过匿名函数该怎么样呢?
slim官方文档给了我们方法
(https://www.slimframework.com/docs/v3/objects/router.html#how-to-create-routes下搜索关键字HomeController::class)

创建相应文件

我们希望通过根目录Controller文件夹下的UserCon类中的getUserName方法来处理 "/name"这个路由
修改index.php

require "vendor/autoload.php";

$app = new SlimApp();

$app->get("/",function(){
   echo "is mine";
});

$app->get("/name", ControllerUserCon::class.":getUserName");

$app->run();

然后再根目录创建Controller文件夹,文件夹下创建UserCon文件
文件夹结构如下

-  Controller
  -  UserCon.php
-  vendor    
-  index.php
-  composer.json
-  compooser.lock

在UserCon.php里编辑内容


启动服务浏览器输入 localhost:8000/name,发现报错



打开错误调试后发现slim找不到ControllerUserCon这个类
(https://www.slimframework.com/docs/v3/handlers/error.html下搜索displayErrorDetails)

composer自动加载

这时候我们就可以使用composer中的自动加载来加载我们想要的类了。
在我们在composer.json文件中
加入

{
    "require": {
        "slim/slim": "^3.0"
    },
    "autoload": {
        "psr-4" : {
            "" : ""
        }
    }
}

这里的意思是根据PSR4规范来加载对应的类(PSR0,PSR4都可以,这里用PSR4)
冒号前面是根命名空间,冒号后面是根目录(注意""转义)
因为我们这里是在ControllerUserCon下加载根目录下Controller文件下的UserCon类,冒号前面是根命名空间(这里根命名空间就是""),
冒号后面是根目录,所以写成了

"psr-4" : {
            "" : ""
        }

的形式
添加完这段代码后需要用composer重写自动加载(vendor/autoload)
在名命令行中

composer dump-autoload  

或者

composer install  

再次打开服务,输入localhost:8000/name
会发现服务已经以来了
如果我们把跟命名空间定义为其他的,比如说Van
我们希望Van这个命名空间指向Controller
那么需要在composer中

修改index中"/name"的路由

$app->get("/name", VanUserCon::class.":getUserName");

修改Controller目录下的UserCon.php

 

这样的话,就是Van这个命名空间指向Controller这个文件夹了
我们需要将composer.json文件修改为

{
    "require": {
        "slim/slim": "^3.0"
    },
    "autoload": {
        "psr-4": {
            "Van": "Controller/"
        }
    }
}

然后重新composer install一下,就可以了,启动服务/name下依然会正常显示。

"files"配置

在composer.json下autoload里,files配置的决定了多带带会自动加载进来的文件,不要遵守PSR0和PSR4,一般用来引入公共文件
我们在composer.json中加入 "files": ["Common/functions.php"]

{
    "require": {
        "slim/slim": "^3.0"
    },
    "autoload": {
        "psr-4": {
            "Van": "Controller/"
        },
        "files": ["Common/functions.php"]
    }
}

然后重新install
在根目录中建立Common文件夹,创建functions.php文件
写入


然后路由中加入

$app->get("/givemefive",function(){
   getMeFive();
});

启动服务访问 localhost:8000/givemefive
页面显示haha~

说明正常,composer帮我们加载了这个文件

Class-map

Class-map也是一种写法,但是没增加一个类都要执行一边composer,以便生成新的autoload_classmap.php文件
比如

"classmap": ["Model/"]

在composer中这样写,
他就会把Model/下的所有类文件根据明名空间加类名一一对应起来
比如你Model中有个User类
他会生成
"ModelUser" => $baseDir . "/Model/User.php",
这样的对应,缺点就是每当有新的类文件我们都需要执行一下composer install生成新的classmap

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28364.html

相关文章

  • composer 自动加载

    摘要:自动加载是指在代码中,不需要显式地使用文件路径将类库文件包含进来,便可使用该文件中定义的类库。在里是这样进行配置的按照的规则,当试图自动加载这个时,会去寻找这个文件。最后,只要在项目中你所需要的所有类库都会在适当的时候自动载入。 Composer是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer...

    alighters 评论0 收藏0
  • php-composer的安装与使用方法(简化版)

    摘要:中文网系统要求运行需要以上版本。注中的路径为相对于的路径这个时候,你就可以调用你自己编写的函数库或者类库了注本文内容参考了中文网,后续还会更新其它的实用功能 1.简介 Composer 是 PHP 的一个依赖管理工具。它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们。《Composer 中文网》 2.系统要求 运行 Composer 需要 PHP 5.3.2+ 以上版本。C...

    mikasa 评论0 收藏0
  • php管理依赖关系工具composer学习笔记

    摘要:首先支持下黄老师的视频网站转型这篇的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频,网站地址放在文末我的博客作用自动安装所需要的模块,自动加载管理项目,发布到网上上去是默认的加载组件地址安装下 首先支持下黄老师的视频网站转型这篇composer的学习笔记也是根据他的视频教程写的,一共十集,讲解的很简单感兴趣的同志们可以上他视频网站购买视频...

    CoyPan 评论0 收藏0
  • Yii2中的代码自动加载机制

    摘要:中是如何实现代码的自动加载的入口脚本的以下两行代码其中的作用注册为自动加载函数。这个负责引入了一个类中的,随后立即解除注册。注册中的为自动加载函数,并利用配置文件即目录下的文件对这个自动加载函数进行了初始化。 1.基本知识 Include与require 的作用: 当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何...

    Jaden 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<