compser的下载、安装、组件安装、使用composer自动加载自定义类
程序员文章站
2022-03-24 21:17:28
...
compser的安装
- 首先需要设置好PHP环境变量,可以百度搜索一下,使PHP命令可以在终端运行
- 使用
cd
进入到php目录,运行composer下载命令php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- 执行安装脚本命令
php composer-setup.php
得到composer.phar文件 - 删除掉安装脚本
php -r "unlink('composer-setup.php');"
- 使composer命令全局有效,将
composer.phar
文件放到PHP目录(如果在PHP目录运行安装命令,文件就在目录下),在PHP目录下创建composer.bat
,文件内容是@php "%~dp0composer.phar" %*
运行一下这个文件,可以双击也可以命令行运行 - 设置中国全量镜像:阿里云的镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
tip:Windows环境有可能会提示没有CA 证书(公钥/私钥)而安装composer失败
- 访问: https://curl.haxx.se/docs/caextract.html,下载
cacert.pem
证书 - 将证书移动到 php 运行环境中,如
phpstudy_pro
目录下面 - 打开与 php 版本对应的
php.ini
文件,找到openssl.cafile=
配置顶 openssl.cafile=D:/phpstudy_pro/cacert.pem
- 去掉前面的分号
;
, 重启服务器Apache/Nginx
,再次运行指令
composer的组件安装
直接使用命令行拿到包或者项目
包的命令是带有require,项目的命令是带有create-project
- 在组件官网上查找组件https://packagist.org/https://packagist.org,里面有安装命令
-
composer require gregwar/captcha
安装组件,这是一个验证码的组件,安装好后文件夹会多了一个组件名的文件夹 -
composer create-project topthink/think tp6
安装一个项目,在命令后面加上新文件夹名 -
安装后
composer.json
和composer.lock
会有新组件或项目的配置信息使用composer.json进行安装
当有很多组件一个个的去安装很费时间,如果别人已经装好了需要的组件,你只需拿到它的json文件一次性安装所需组件
-
在目录下只需要有JSON或加上LOCK文件,json文件是必须的。
-
例如下面的composer.json文件
{
"require": {
"gregwar/captcha": "1.*"
}
}
-
执行命令行
composer install
就会安装JSON文件内的全部组件,然后有lock文件会进行对应的组件详细配置 - 如果想要一个纯净的composer不带任何组件,json文件写对空{},然后运行
composer install
命令即可
{
}
composer的自动加载
文件目录:
文件的内容:
files文件引入
就像是PHP文件内直接require只不过是写到composer里面
{
"autoload": {
"files": [
"app/controller/User.php",
"lib/index/Goods.php"
]
}
}
classmap: 依次在目录下寻找类
它检测的是文件内的命名空间和类名,文件名字是可以随意的,文件名是abc.php只要内容存在需要的类就会加载
{
"autoload": {
"classmap": [
"app/controller",
"lib/index"
]
}
}
psr-4: 进行类映射(推荐使用这种)
psr-4是左边命名空间,右边真实路径,这种映射,命名空间与真实目录的命名是可以不一致的,例如think空间对应是lib目录下的index目录
{
"autoload": {
"psr-4": {
"app\\controller\\":"app/controller",
"think\\":"lib/index"
}
}
}
修改完JSON文件需要执行更新命令composer dump-autoload
命令更新json文件,加载才会生效
test1.php调用代码:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use app\controller\User;
echo User::hello();
use think\Goods;
echo Goods::hello();
use think\Order;
echo Order::hello();
?>
上一篇: 总结Python数据类型及其方法
下一篇: Python语法快速入门指南