欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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.jsoncomposer.lock会有新组件或项目的配置信息

    使用composer.json进行安装

    当有很多组件一个个的去安装很费时间,如果别人已经装好了需要的组件,你只需拿到它的json文件一次性安装所需组件

  • 在目录下只需要有JSON或加上LOCK文件,json文件是必须的。

  • 例如下面的composer.json文件

    1. {
    2. "require": {
    3. "gregwar/captcha": "1.*"
    4. }
    5. }
  • 执行命令行composer install 就会安装JSON文件内的全部组件,然后有lock文件会进行对应的组件详细配置

  • 如果想要一个纯净的composer不带任何组件,json文件写对空{},然后运行composer install命令即可
  1. {
  2. }

composer的自动加载

文件目录:
compser的下载、安装、组件安装、使用composer自动加载自定义类

文件的内容:
compser的下载、安装、组件安装、使用composer自动加载自定义类

files文件引入

就像是PHP文件内直接require只不过是写到composer里面

  1. {
  2. "autoload": {
  3. "files": [
  4. "app/controller/User.php",
  5. "lib/index/Goods.php"
  6. ]
  7. }
  8. }

classmap: 依次在目录下寻找类

它检测的是文件内的命名空间和类名,文件名字是可以随意的,文件名是abc.php只要内容存在需要的类就会加载

  1. {
  2. "autoload": {
  3. "classmap": [
  4. "app/controller",
  5. "lib/index"
  6. ]
  7. }
  8. }

psr-4: 进行类映射(推荐使用这种)

psr-4是左边命名空间,右边真实路径,这种映射,命名空间与真实目录的命名是可以不一致的,例如think空间对应是lib目录下的index目录

  1. {
  2. "autoload": {
  3. "psr-4": {
  4. "app\\controller\\":"app/controller",
  5. "think\\":"lib/index"
  6. }
  7. }
  8. }

修改完JSON文件需要执行更新命令composer dump-autoload命令更新json文件,加载才会生效

test1.php调用代码:

  1. <?php
  2. require_once __DIR__ . '/vendor/autoload.php';
  3. use app\controller\User;
  4. echo User::hello();
  5. use think\Goods;
  6. echo Goods::hello();
  7. use think\Order;
  8. echo Order::hello();
  9. ?>