PHP使用composer《MordenPHP》
PHP使用composer
来自《MordenPHP 》
- 注释
首先要明白这个概念,但不用深究.
建议多用命令, 比该配置方便太多了.Composer是PHP的一个依赖管理工具, 不单单是一个包管理器.
他涉及包:"Packages"和库:"libraries"两个概念平时使用当中, 只要声明所依赖的外部工具库"libraries"
Compser会自动安装工具库和依赖的库文件主站
https://packagist.org/
国内镜像
https://pkg.phpcomposer.com/packagist作为PHP的应用商店, 是可以自定义任意上传的.
因为packagist本身只是将指定用户指定的版本库如github理的代码同步到packagist中
过程:
1.使用composer init 在指定目录下如demo, 按照流程生成一个项目目录
2.在github中生成一个项目,同时将本地demo中部署代码,将处理vendor之外的代码提交到github.
3.在packagist中注册账户, 在packagist的submit页面输入github中代码的clone地址,check完成后提交
4.然后我们就可以在packagist中搜索的到.
5.此时就可以, 使用composer.json或composer create-project直接下载了.
6.如果后期版本库中有代码更新,但是packagist中的代码并不会更新.我们使用composer下载的还是老代码
7.这是时候需要我们登录packgist中的My packges中选择项目点击update进行更新,composer才能下载最新代码
8.如果不想手动更新, 可以利用git的Hook钩子进行自动的同步.
9.在packgeist中的profile中的show api token可以看到token
10.在github中找到该项目,点击setting点击Integrations & services选择packgeist
11.user输入packgeist的用户名,token就是让蔡在packgist中的那个见9步骤,domain页面有提示就是https://packagist.org/
常用操作
- 全局进行安装PHP包
$ composer global require friendsofphp/php-cs-fixer安的时候就会发现下面这几句提示,已经告诉我们要把包安装到~/.composer/下了而且安装完毕后,当前目录页没有composer.json composer.lock vendor/包等等文件Changed current directory to /Users/liuhao/.composerUsing version ^2.13 for friendsofphp/php-cs-fixer./composer.json has been updated......
- 当前目录进行安装PHP包
这里没有任何目录修改或指定方面的提示,而且安装完毕当前目录会有composer.json composer.lock vendor/包等等相关文件$ composer require friendsofphp/php-cs-fixerUsing version ^2.13 for friendsofphp/php-cs-fixer./composer.json has been created......
安装composer
未包含window安装方式
ubuntu下可以直接使用 sudo apt-get install composer安装
- 初始化安装composer
注:Mac 下可以直接使用brew install composer 即可安装完毕利用PHP -R命令进行安装(原自官方的安装方式)也可直接到官网下载composer.phar文件,自己安.php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"1. 以上的基本步骤, 就是利用PHP下载->验证->安装->删除原包
2. 下载完毕后会在当前目录生成一个composer-setup.php文件
3. 安装完毕后会在当前目录生成一个composer.phar
4. 验证是否安装成功PHP ./composer.phar 如果成功一看就懂
- 局部安装
将./composer.phar复制到任意目录,然后通过PHP ./composer.phar指令即可使用composer了.
- 全局安装
将./composer.phar 复制到/usr/local/bin目录下即可
cp ./composer.phar /usr/local/bin
更换composer镜像,其实就是指定composer的下载仓库,下载仓库也可以指定为个人的github
常看当前配置镜像:"composer config -gl"全称写法就是: composer config --global --list
意思就是, 查看全局配置文文件列表
"composer config -gl repo.packagist"
查看当前进行地址命令已弃用了.下面就是列表中的镜像地址
[repositories.packagist.org.url] https?://packagist.org
- 全局配置 仓库下载地址
系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。composer config -g repo.packagist composer https://packagist.phpcomposer.com查看配置后的地址:composer config -gl
- 单个项目配置 仓库下载地址
单个项目配置: 将配置信息添加到某个项目的 composer.json 文件中composer config repo.packagist composer https://packagist.phpcomposer.com上述命令将会在当前项目中的 composer.json
文件的末尾自动添加镜像的配置信息(也可以手工添加):"repositories": {"packagist": {"type": "composer","url": "https://packagist.phpcomposer.com"}
}查看配置后的地址:composer config -gl如果想要测试的话:1.找一个空的目录, 新建一个composer.json文件.2.里面必须要写上"{}"(否则执行命令会爆字符串错误).3.然后使用composer config repo.packagist composer https://packagist.phpcomposer.com4.该命令,在查看文件即可得到想要的答案.这里以指定国内仓库下载laravel框架为例:
{"name": "laravel/laravel","description": "The Laravel Framework.","keywords": ["framework", "laravel"],"license": "MIT","type": "project","require": {"php": ">=5.5.9","laravel/framework": "5.2.*"},"config": {"preferred-install": "dist"},"repositories": {"packagist": {"type": "composer","url": "https://packagist.phpcomposer.com"}}
}
composer常用命令
主要使用命令搜索 (主要作为,看下服务器是否存在该包)
composer search展示 (展示该名称的包的详细信息,版本号,名称之类的)
show --all申明依赖 (不编辑composer.json直接通过该命令进行安装库)
安装后会生成一个composer.json的文件,里面有默认的配置
和composer.lock文件,文件中列出项目中所有正在使用的组建的版本(主版本,次版本,修订版本)
让项目只能使用具体版本的组建
composer require安装
composer install (安装配置文件里声明的配置的包)更新 (配置文件中有改动, 让composer从配置中更新一下包的状态)
composer update重新读取配置文件,重新配置一下环境
composer dump
composer命令介绍之install和update及其区别
https://xia.moe/archives/introduce-to-composer-install-and-update/
然而,对于如何『安装他们』,新手可能并不清楚。网上的答案有的说 composer install,有的说composer update,而这两者似乎都能成功把依赖下载下来并安装好,那么他们究竟有何区别呢?首先要搞清楚的一件事情是,所有的依赖都定义在composer.json中,手册中给出了一些基本用法和例子。你可能已经注意到,在指定版本号的时候,我们并不一定要指明一个精确的版本。那么就有可能发生这么一个情况,对于同一份composer.json,我们在不同时刻拉取到的依赖文件可能不同(因为composer会在满足条件的情况下去拉取最新的那份依赖),从而导致一些异常情况。composer update和composer install正是为了解决这个问题而出现的。当你执行composer update的时候,composer会去读取composer.json中指定的依赖,去分析他们,并且去拉取符合条件最新版本的依赖。然后他会把所拉取到的依赖放入vendor目录下,并且把所有拉取的依赖的精确版本号写入composer.lock文件中。composer install所执行的事情非常类似,只在第一步的时候有差别。当你本地如果已经存在一份composer.lock时,它将会去读取你的composer.lock而非composer.json,并且以此为标准去下载依赖。当你本地没有composer.lock的时候,它所做的事情和composer update其实并没有区别。这意味着,只要你本地有一份composer.lock,你就可以保证无论过去了多久,你都能拉到相同的依赖。而如果你把它纳入你的项目的版本控制中,那么你就可以确保你项目中的每一个人、每一台电脑,不管什么系统,都能拉取到一模一样的依赖,以减少潜在的依赖对部署的影响。当然,请记得,你应该使用的命令是composer install。那什么时候该使用composer update呢?当你修改了你的依赖关系,不管是新增了依赖,还是修改了依赖的版本,又或者是删除了依赖,这时候如果你执行composer install的时候,是不会有任何变更的,但你会得到一个警告信息Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.有人可能会很好奇php是怎么知道我修改了依赖,或者composer.lock已经过期了。很简单,如果你打开composer.lock的话,会发现其中有一个hash字段,这就是当时对应的那份依赖的哈希值。如果值不一致自然而然就知道发生了变更了。这时候,你应该去通过composer update来更新下你的依赖了。如果你不希望影响别的已经安装的依赖,仅仅更新你修改的部分,那你可以通过指定白名单来确定要更新的范围,例如composer update monolog/monolog仅会更新monolog/monlog这个依赖,别的依赖哪怕有更新也会被忽略。
composer使用步骤 - 常用命令操作install&require&update进行下载安装和升级
以mongolog为例:# 查看服务器是否有此包 搜索结果很多,自行甄别
composer search mongolog# 查看该包的所有信息
composer show --all monolog/monolog# 两种安装方式
1.通过得到的包信息,修改配置文件再利用composer install 进行安装
所有的文件安装目录都为vendor目录,打开就可以看得到.
如:
{"name": "liuhao/demo","description": "composer test use","type": "project","authors": [{"name": "liuhao","email": "json_liuhao@163.com"}],"require": {"monolog/monolog":"1.22.*"}
}2.利用composer require XXX/XXX来直接进行安装,
以symfony/http-foundation为例
安装完成后,查看配置文件发现, 他会自动修改配置文件
如下:composer require symfony/http-foundation配置文件如下:
{"name": "liuhao/demo","description": "composer test use","type": "project","authors": [{"name": "liuhao","email": "json_liuhao@163.com"}],"require": {"monolog/monolog":"1.22.*","symfony/http-foundation": "^3.3"}
}# 利用update删除某个包
{"name": "liuhao/demo","description": "composer test use","type": "project","authors": [{"name": "liuhao","email": "json_liuhao@163.com"}],"require": {"monolog/monolog":"1.22.*"# 删除了这一行的代码之后进行composer update查看vendor中该包已消失}
}
composer使用步骤 - 创建自己的composer组建
- PHP组建的文件系统的组织方式
PHP组建的文件系统结构基本上是定型的:src/这个目录包含组建的源码tests/这个目录包含组建的测试composer.json这个是composer的配置文件README.md这个markdown文件提供有关组建的有用信息,包括组建名,说明,作者,用法,贡献代码等CONTRIBUTING.md这个markdown文件说明别人如何为这个组建做贡献.LICENSE这个纯文本文件包含组建的软件许可证CHANGELOG.mdg这个Markdown文件列出组建在每个版本中引入的改动.
- 在指定目录下调用composer命令初始化
在需要的目录下使用
composer init
初始化当前项目
这一块主要是在向packgist中提交项目时使用,因为要在composer中创建自己的项目.
提交的时候需要composer中填写这些信息.
平时要首次载项目代码的时候也可使用这个,composer create-project命令直接创建之后会依次弹出多种步骤
如下:这里填写<包提供者>/<包名>的信息,一般就是像GitHub的cloneURL地址一样
git@github.com:NameJson/noone.git 这样就写 NameJson/none
Package name (<vendor>/<name>) [liuhao/demo]:包描述(必填)按照个人认为的描述信息进行填写
Description []:作者(必填)
Author [json_liu <json_liuhao@163.com>, n to skip]:最低稳定版本(选填),即当前是什么版本
如填写 dev开发板 stable稳定版 beta公开测试版 alpha内部测试版 rc候选版本
Minimum Stability []:库类型(选填)默认library它将复制文件到 vendor 目录。
如果是一个项目的话就用project
Package Type (e.g. library, project, metapackage, composer-plugin) []:包的许可证,协议信息。可以是字符串或字符串数组。(选填)
如: MIT Apache-2.0 BSD-2-Clause GPL-2.0等等,意识就是版权遵循的时什么协议
License []:一般我,就是下面就可以一直回车了# 提示无意义
Define your dependencies.# 声明版本的依赖(选填) 这里是在问,你是否依赖一个第三方的项目
Would you like to define your dependencies (require) interactively [yes]?
Search for a package:# 开发版本的声明依赖(选填),需要选yes 不需要直接回车
Would you like to define your dev dependencies (require-dev) interactively [yes]?# 此处如果选择yes则会让你搜索你需要的库
Search for a package:# 如果搜索的到,将会把搜索的结果列出来, 输入序号即可
如:
Found 6 packges matching xiaxie_mongo
[0] xiaxie/mongo
[1] xiaxie/mongoDb
[2] zhe_shi_wo_xia_xie_de/mongo_db# 然后会再次弹出,如果不需要则跳过
Would you like to define your dev dependencies (require-dev) interactively [yes]?# 然后会输出一下生成的配置文件内容的预览:
{"name": "liuhao/demo","description": "composer test use","type": "project","authors": [{"name": "liuhao","email": "json_liuhao@163.com"}],"require": {}
}
# 一般会提示是否把vendor目录放在.gitignore的git忽略里面,一般都是需要选yes忽略的
# vendor一般就是安装完包的之后才会有
Would you like the vendor directory added to your .giignore [yes]?
- 通过composer.json配置文件
########################这里是我从MordenPHP 70页看到的,觉得很棒##############################
PHP组建必须有composer.json文件, 而且这个文件中必须是有效的Json.
composer会使用这个文件中的信息进行查找,安装和自动加载PHP组建.
composer.json还包含着,组建在Packagist目录中的信息.下面Json来自https://github.com/thephpleague/skeleton/edit/master/composer.json
{"name": ":vendor/:package_name","type": "library","description": ":package_description","keywords": [":vendor",":package_name"],"homepage": "https://github.com/:vendor/:package_name","license": "MIT","authors": [{"name": ":author_name","email": ":author_email","homepage": ":author_website","role": "Developer"}],"require": {"php" : "~5.6|~7.0"},"require-dev": {"phpunit/phpunit" : ">=5.4.3","squizlabs/php_codesniffer": "^2.3"},"autoload": {"psr-4": {":vendor\\:package_name\\": "src"}},"autoload-dev": {"psr-4": {":vendor\\:package_name\\": "tests"}},"scripts": {"test": "phpunit","check-style": "phpcs -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests","fix-style": "phpcbf -p --standard=PSR2 --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 src tests"},"extra": {"branch-alias": {"dev-master": "1.0-dev"}},"config": {"sort-packages": true}
}有时候还会有其他的字段如:可以参考一下上面的一部分composer.jsonname这是组建的厂商名和包名description这个属性的值简要说明组建的内容, 这个几句话会在Packagist的简介汇总显示keywords这个属性的值,是几个描述组建的关键字,用于别人在Packagist中搜索homepage这个是组建网址的URLlicense这个是PHP组建采用的软件许可证,http://choosealicense.com对软件许可证做出了详细的说明,记住, 发布软件一定要声明许可证.我比较喜欢的是MIT Public Licenseauthors这个是一个数组,包含每一位作者的信息.每个作者的信息至少要包括姓名和网站URL.support这个组建的用户获取技术支持的方式,我喜欢设置为电子邮件地址和支持讨论组的URL.你也可以列出IRC频道.require这个属性组建自身的依赖的组建,我们应该列出每个依赖的厂商名和包名,以及最小版本号.我还喜欢列出组建需要的最小PHP版本号.在开发环境和生成环境都会安装这个属性中列出的依赖.require-dev这个属性和require属性类似,不过列出的是开发这个组建所需要的依赖.例如我通常把phpunit当做开发依赖,以便组建的其他贡献者能编写和运行测试.这些组建只在开发时安装,生产环境不会安装suggest这个属性的值和require类似,不过只是建议安装的组建.以防与其他组建合作时需要.与require属性不同的是,这个对象的值是自由的文本字段.用户描述每个建议安装的组建.composer不会自动安装这些组建autoload这个属性告诉composer自动加载器,如果自动加载这个组建.我建议使用PSR-4规范的自动加载器.在PSR4中我们要把组建的命名空间前缀与对应组建根目录的文件系统相对应起来.这个我们的组建才是符合PSR4规范的自动加载标准了.要对应命名空间必须以两个反斜线\\来结尾,防止命名空间中有类似字符串序列的其他组建冲突.
- 案例: 我们项目中使用composer自建组建, 封装常用的函数,为全公司用
注意: 如果采用指定的git仓库而不是官方的composer镜像仓库,下面的require字段就是git中的tag 基本上,这个感觉和docker中的tag类似
这里下载项目时配置的composer.json
{"repositories": [{"type": "git","url": "git@code.mycode.pro:common/zend_model.git"},{"type": "git","url": "git@code.mycode.pro:common/library.git"},{"type": "git","url": "git@code.mycode.pro:common/ucenter_sdk.git"}],"require": {"Btctrade/ZendModel": "0.0.*","Btctrade/Library": "dev-master","Btctrade/Ucenter": "1.0.*"}
}
这是项目中vendor的目录结构
//虽然他们三个在三个git仓库中, 但是因为厂商名一眼个, 他们下载到本地之后, 都归属在同一目录下了.
$ tree -L 2
.
├── Btctrade
│ ├── Library
│ ├── Ucenter
│ └── ZendModel
├── autoload.php
├── bin
├── composer
│ ├── ClassLoader.php
│ ├── LICENSE
│ ├── autoload_classmap.php
│ ├── autoload_namespaces.php
│ ├── autoload_psr4.php
│ ├── autoload_real.php
│ ├── autoload_static.php
│ └── installed.json
└── zendframework├── zend-db└── zend-stdlib9 directories, 9 files
这是被下载的几个项目中的,composer.json
{"name": "Btctrade/ZendModel","description": "zend db orm","type": "library","homepage": "https://code.mycode.pro/common/zend_model","authors": [{"name": "huangql","email": "hql@btctrade.com"}],"require": {"php": ">=5.6","zendframework/zend-db": "2.9.3"},"autoload": {"psr-4": {"Btctrade\\ZendModel\\": "src/"}}
}{"name": "Btctrade/Library","description": "公用libk库","type": "library","homepage": "https://code.mycode.pro/common/library","authors": [{"name": "huangql","email": "hql@btctrade.com"}],"require": {"php": ">=5.6"},"autoload": {"psr-4": {"Btctrade\\Library\\": "src/"}}
}{"name": "Btctrade/Ucenter","description": "ucenter sdk包","authors": [{"name": "weimingyang","email": "wmy@btctrade.com"}],"require": {"php": ">=5.6"},"autoload": {"psr-4": {"Btctrade\\Ucenter\\": "src/"}}
}
- composer.json和composer.lock文件介绍
$ composer require league/csv
$ composer require guzzlehttp/guzzle~/workspace/Projects/Test ⌚ 16:20:05
$ tree -L 2
.
├── composer.json
├── composer.lock
└── vendor├── autoload.php├── composer├── guzzlehttp├── league└── psr5 directories, 4 files//该文件主要为项目,下载组建的的配置文件.该文件可以手写也可以调用composer直接下载是,他会自动生成.
//必要的时候, 比如修改版本,更新之类的, 也可以进行手动修改.不过我还是喜欢用命令操作.....
//composer会根据这个文件,自动的查找安装和自动加载PHP组建
//composer.json还包含有组建在packagist目录中的信息
//这里是下载的时候的composer.json一般都会都是我们自己定制的,或是是调用composer进行生成的,所以会比较小
//如果是我们自建组建的话会比较大,看上面的部分.可以做对比
~/workspace/Projects/Test ⌚ 16:21:29
$ cat composer.json
{"require": {"guzzlehttp/guzzle": "^6.3","league/csv": "^9.1"}
}//该文件一般的都是自动生成的,不用我们来维护和管理.
//文件中列出项目中所有正在使用的组建的版本(主版本,次版本,修订版本)
//让项目只能使用具体版本的组建,这其实是为了锁定项目.让项目只能使用具体版本的组建.
//我们在用的时候应该把这个文件也纳入到版本库中, 让其他人也保持和我们一样的版本
//主要: composer install 不会安装比composer.lock中列出的版本新的的版本
//如果确定要下载和更新新的组建和composer.lock,用composer update命令
//会把PHP组建更新到最新稳定版,还会更新composer.lock,写入新的PHP组建的版本号.
~/workspace/Projects/Test ⌚ 16:21:29
$ cat composer.lock
{"_readme": ["This file locks the dependencies of your project to a known state","Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies","This file is @generated automatically"],"content-hash": "9e9ac13eec7c9be5b26c7cb121df771f","packages": [{"name": "guzzlehttp/guzzle","version": "6.3.3","source": {"type": "git","url": "https://github.com/guzzle/guzzle.git","reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"},"dist": {"type": "zip","url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba","reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba","shasum": ""},"require": {
................太长了,到这里就算了
composer的自动加载,性质和spl_autoload_register一样
总体来说 composer 提供了几种自动加载类型
classmap
psr-0
psr-4
files
这几种自动加载都会用到,理论上来说,
项目代码用 psr-4 自动加载,
helper 用 files 自动加载,
development 相关用 classmap 自动加载。
psr-0 已经被抛弃了,不过有些历史遗留依然在用,所以偶尔也会看到。
- classmap自动加载
这应该是最最简单的 autoload 模式了。大概的意思就是这样的:{"classmap": ["src/"]
}
然后 composer 在背后就会读取这个文件夹中所有的文件 然后再 vendor/composer/autoload_classmap.php 中怒将所有的 class 的 namespace + classname 生成成一个 key => value 的 php 数组<?php
return [ 'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php'
];
?>
然后就可以光明正大地用 spl_autoload_register 这个函数来怒做自动加载了。
- psr-4自动加载
psr-4最简单来讲就是可以把 prs-4 的 namespace 直接想想成 file structure
"Acme\\Util\\": "src/" 前面是命名空间,有子空间就直接用个\\继续写.后面是目录名或文件名
这里的目录指定位置,是以composer.json为基准的.{"name": "acme/util","auto" : {"psr-4": {"Acme\\Util\\": "src/"}}
}vendor/acme/util/composer.jsonsrc/ClassName.php
可以看到将 Acme\Util 指向了 src 之后 psr-4 就会默认所有的 src 下面的 class 都已经有了 Acme\Util 的 基本 namespace,而 psr-4 中不会将 _ 转义成 \ 所以就没有必要有 psr-0 那么深得文档结构了。<?php
namespace Acme\Util;
class ClassName {}
?>
- file自动加载
Files如果你想要明确的指定,在每次请求时都要载入某些文件,那么你可以使用 'files' autoloading。通常作为函数库的载入方式(而非类库)。实例:{"autoload": {"files": ["src/MyLibrary/functions.php"]}
}
composer案例操作
composer安装图形验证码插件
- gregwar/captcha图形验证码
composer require gregwar/captcha
具体的使用方式可以参考packgest.org搜索该项目
composer安装lavavel框架
- 通过composer install来安装,
但是这样的安装方式, laravel会出现在vendor中,而且不能用, 不知道是为什么
# 添加配置文件"require": {"laravel/laravel":"5.*"}
- 通过Composer Create-Project 命令安装larvael
# 但是这句应该是通用的,如果要指定保存的目录, 下面两种方式都可以试一下
# 不指定版本号即获取最新版本,不指定别名的自动命名为laravel
composer create-project laravel/laravel=版本号 --prefer-dist 别名即在本地创建的项目名,也可也是一个多层级的目录
composer create-project laravel/laravel=版本号 保存的本地目录名或路径 --prefer-dist如下:# 安装最新版的laravel框架composer create-project laravel/laravel --prefer-dist# 安装5.5版本的laravel框架composer create-project laravel/laravel=5.5 --prefer-dist liuhao_blog
- 通过larvael安装器进行安装
# 安装Laravel安装器
composer global require "laravel/installer"# 将以下目录添加到环境变量中
~/.composer/vendor/bin
如:在~/.bash_profile中export PATH="$PATH:~/.composer/vendor/bin"source ~/.bash_profile# 直接在命令中使用
laravel命令测试是否配置成功# 使用laravel安装器进行安装
laravel new 项目名# 下载最新版本
laravel new 项目名 --dev
Artisan控制台
Artisan是laravel中自带的命令行工具的名称
由强大的Symfony Console组建驱动
提供了一些对应用开发有帮助的命令: 如新建控制器,新建model之类的.
- Artisan常用命令
其实平时用的最多的就是make命令
还有其他众多命令, 如make:auth之类的, 到时候用到了在help吧.# 查看可用的Artisan的命令(list)PHP artisanphp artisan list# 查看命令的帮助信息PHP artisan help migrate# 创建控制器PHP artisan make:controller TestController# 创建模型PHP artisan make:demo Test# 创建中间件PHP artisan make:middleware Activity
转载于:https://my.oschina.net/chinaliuhan/blog/3064492
PHP使用composer《MordenPHP》相关推荐
- composer PHP Fatal error: Allowed memory size of 报错解决
执行以下命令(安装多线程) php composer.phar require hirak/prestissimo 出现以下提示 PHP Fatal error: Allowed memory siz ...
- CentOS7安装Composer
1.使用命令下载 curl -sS https://getcomposer.org/installer | php 2.下载之后设置环境变量 mv composer.phar /usr/local/b ...
- composer爆错:zlib_decode():data error
昨晚用nginx运行Yii的一个开源小项目,结果composer安装依赖一直报错,如下 Failed to decode response: zlib_decode(): data error 如果遇 ...
- compser可以检查php扩展吗,composer扩展
## 一些简单的thinkphp扩展 1. 正则表达式的扩展: PHP7以上: ``` composer req gherkins/regexpbuilderphp ``` PHP5 ``` comp ...
- 简单安装与使用composer
1.下载composer.exe工具,然后进行安装 这一步需要找到你使用的php版本文件 2.windows+r cmd 输入composer 安装中国镜像,提高使用效率 https://p ...
- 用composer安装laravel-bjyblog
前面讲了两行命令composer的安装,现在我们来操作一下composer安装基于laravel的博客laravel-bjyblog.测试环境是linux,bt面板,php7.2安装扩展fileinf ...
- Packagist / Composer 中国全量镜像
Packagist 镜像 请各位使用本镜像的同学注意: 本镜像已经依照 composer 官方的数据源安全策略完全升级并支持 https 协议!请各位同学 按照下面所示的两个方法将 http://pa ...
- laravel项目composer安装
1.下载 Composer (https://pkg.phpcomposer.com/#how-to-install-composer) 安装前请务必确保已经正确安装了 PHP.打开命令行窗口并执行 ...
- Composer 篇
学习网站 Composer 中文网 资源包 Packagist Packagist / Composer 中国全量镜像 如何安装 Composer 下载 Composer 安装前请务必确保已经正确安装 ...
最新文章
- Oracle 解决4031错误
- linux、sql 常用的一些特殊符号
- jquery file upload 后台收到的文件名中文乱码, filename中文乱码
- 搭建springboot环境
- Intellj IDEA 注册码 2018
- 百年 IBM 终于 All In 人工智能和混合云!
- 简单数据策略帮助LinkedIn提高企业服务收入
- matlab语音去除白噪声_matlab去除高斯白噪声
- 什么是JavaSE,写给第一次接触Java的人
- 动态物体检测(python)
- pandas计算环比与同比
- 从新电脑开始构建FATE环境,图文并茂
- 科学家们认为 计算机不可能,健汉语语法与中国人的思维能力
- 【JavaScript】为什么是script error.
- [RK3588 Android12]修改开机logo和播放开机视频
- 使用rest_framework的routers模块添加路由
- ArcGIS Pro从0到1入门实战教程 书籍淘宝线上销售,免费下载数据和视频
- Python中的字符串
- 解决uni-app微信小程序input输入框在底部时,键盘弹起页面整体上移问题
- 华为5c_华为5c手机价格及产品参数配置【图文】