composer自动加载配置

composer自动加载

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

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

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

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

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

composer dump-autoload  

或者

composer install  

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

修改index中'/name'的路由

$app->get('/name', \Van\UserCon::class.':getUserName');

修改Controller目录下的UserCon.php

 <?php
namespace Van;

Class UserCon
{
    public function getUserName()
    {
        echo 'wang';
    }
}

这样的话,就是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文件
写入

<?php

function getMeFive (){
   echo 'haha~';
}

然后路由中加入

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

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

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

Class-map

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

"classmap": ["Model/"]

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值