2019.09.05 更新:
在 laravel-admin 项目中安装 redis 和 chartjs 插件时,报错 PHP内存不足,我把php的内存设置为 2G 还是不足,后来设置 -1 后解决问题。
原因可能是: php gc,禁用 gc 可能会有效果;(待研究~)
2019.07.21 晚上 更新:
阿里云 packagist 有问题,会报如下错误,所以 阿里云 packagist 慢慢观察看吧,目前我是翻墙+https://packagist.phpcomposer.com,慢但是不会报错。
2019.07.21 更新:
由于阿里云上线了 composer 全量镜像,so 建议 更换阿里云的 packagist :
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ composer config -g --unset repos.packgaist // 取消配置
2019.06.03 更新:
在windows环境下,重新修改composer所依赖的php版本,可以在修改环境变量(计算机右键->属性->高级系统设置->高级->环境变量->PATH)里面的php版本就可以了。
<?php 以下是原文 ?>
如果你现在做PHP还不会使用composer的话,那真的有点 out 了。
composer带给我们的不仅仅是方便快捷,更多的是能让我们有一种模块化开发的概念,减少不必要的代码功能重复,加快开发速度。
英文:composer官网 中文: composer中文网站
接下来就是简单的总结了。
一、安装的时候,全局安装。
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
二、由于“墙”的存在,我们需要把 packagist(composer仓库)改成国内镜像
composer config -g repo.packagist composer https://packagist.laravel-china.org
composer config -g repo.packagist composer https://packagist.phpcomposer.com(上面的不行了,换成这个)
三、常用命令
-> composer -vvv <command> // 输出执行命令时的详细信息
-> composer archive // 将项目中的包,打包为压缩文件
-> composer config -l -g // 查看全局 composer 配置
-> composer create-project <name/packname=5.1.*> [<yours_project_name>] -- 创建一个新项目
-> composer diagnose // 诊断系统的常见错误。这对于调试非常有用,因为它检查一些例如连接到包、可用磁盘空间和 git 的设置等.
-> composer dump-autoload // 重新生成 autoload 文件(类库映射文件)
-> composer help <command> // 显示给定命令的帮助页面.
-> composer init -- 手动创建一个composer.json,然后使用 composer install ,超级麻烦。
-> composer install [--no-dev] // 根据 composer.lock 进行安装,如果没有composer.lock,则根据 composer.json。后面的参数不会安装测试环境的包。
-> composer search // 当你不知道具体的包名时使用。
-> composer self update // composer更新到最新的可用版本.
-> composer show -i // 显示所有安装的package。
-> composer status // 显示一组本地被更新的依赖。如果从源代码中安装一些 东西 (用 --prefer-source 选择项), 最终我们将会在 /vendor 文件夹克隆该包。如果我们修改了包信息, composer status 命令将会使用 git 展示这些修改.
-> composer update ["<name/packname:2.1.*>"]-- 根据 composer.json 进行安装,同时更新 composer.lock。相当于删除了 composer.lock,然后重新运行 composer install。如果后面没有 name/packname ,则更新所有的包到最新版本。不建议使用,容易忘记后面的 name/packname;
-> composer remove symfony/console // 移除包
-> composer require "name/packname:3.2.*" 安装新的包,可以指定版本。建议使用。
-> composer require symfony/console=4.3.4 [--dev] // 是否只在测试环境下安装。
-> composer global require phpunit/phpunit -- phpunit 几乎所有的项目都会需要phpunit,所以可以全局安装
版本问题:
1.2.3 -- 确定版本
1.2.* -- 安装1.2的任意版本
>=1.0,<2.0 -- ,表示 and ,| 表示 or;
~1.2 -- 相当于 >=1.2,<2.0
~1.2.3 -- 相当于 >=1.2.3,<1.3
稳定性问题
stable > RC > beta > alpha > dev
- –prefer-dist 和 –prefer-source区别:前者是从github下载的 .zip 压缩包,并进行缓存,下次使用时会从缓存中加载,速度更快,适用于直接使用;后者是直接下载的源码,包括了git信息,无法缓存,适用于源码修改;
四、项目中使用
一般来说composer插件都下载至根目录下的 /vendor 文件夹下。
require/include __DIR__ . '/vendor/autoload.php'; // 可以在项目中正常使用了
五、自己创建一个 composer 包
1. 在一个测试目录下,创建一个文件,/src/Main/FormatData.php
,内容如下图所示:
2. composer init 生成 composer.json文件,并手动填写
3. 在 composer.json 中添加 autoload。
{
"name": "mt/formatdata",
"description": "mt test files",
"type": "library",
"license": "creative commons",
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-0": {
"Main": "src/"
}
}
}
4. 运行 composer install
,然后创建 index.php 文件:
<?php
require_once './vendor/autoload.php';
use Main\FormatData;
$str = "good;test";
$For = new FormatData();
var_dump($For->str2Arr($str));
5. 运行 php index.php
结果如下,测试 ok ;
6. 接下来就是注册一个github账号,然后用github账号注册 packagist,提交。
他们说快写一首情歌雅俗共赏
落笔传神还要容易传唱
上得厅堂也下得厨房
就像我一直在找的姑娘
—— 许嵩 《雅俗共赏》