autoloader.php
vendor
,而非全局
# 执行官方安装命令
curl -sS https://getcomposer.org/installer | php
# 会失败,因为php程序找不到
which php
# 的确提示php找不到
# 最新macos不再内置php,所以php命令不可用,需要手工设置php路径
# 以MAMP为例,其它集成环境工作也是一样的
# 通过查看得知MAMP Pro,php7.4路径
# 打开~/.bash_profile并插入
sudo vi ~/.bash_profile
# 按i进入插入状态,并输入/或粘贴以下内容
export PATH="/Applications/MAMP/bin/php/php7.4.21/bin:$PATH"
#按 :wq 保存后退出
# 执行一下 ~/.bash_profile
source ~/.bash_profile
# 再次查看php路径
which php
# 输出:/Applications/MAMP/bin/php/php7.4.21/bin/php 正确
# 推荐使用别名链接
php: aliased to /Applications/MAMP/bin/php/php7.4.21/bin/php -c "/Library/Application Support/appsolute/MAMP PRO/conf/php7.4.21.ini"
composer: aliased to /Applications/MAMP/bin/php/composer
# 如果你使用的MAMP, 在选择PHP版本时,将下面的active...also 二个全选上,将无视上面全部操作
# 下载到当前项目中
curl -sS https://getcomposer.org/installer | php
# 执行完毕,会在当前项目目录中看到一个 composer.phar 文件, 这就是composer命令执行器
# 目前composer只能用到当前项目中,且需要通过 composer.phar来执行
# 为了简化composer的使用, 将composer.phar移动到全局,并简化为composer
# macos中, 应该在命令前用 sudo 提升权限 ,否则拒绝访问
sudo mv composer.phar /usr/local/bin/composer
# 执行成功后, 当前项目目录中的composer.phar就没有了,被移动了
# 这时,可查看一个composer版本,以确定简化命令composer可用
# 从此不必再使用完整的compser.phar命令了,当然全称命令也失效了不能更用
composer --version
# Composer version 2.3.5 2022-04-13 16:43:00
# 输入composer,可查看所有composer指令
composer
composer 是从源址下载,而非 zip,而国外网站下载很慢且可能失败因为推荐将下载源切到国内镜像地址国内提供类似服务的镜像很多,大家常用的是阿里的, 原因不必说了
# 直接在终端中输入以下命令即可,不会有任何输出,就对了
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 查看composer 所有全局配置项,可以看到像像源
composer config -gl
composer.json
composer init
指令交互式创建交互式创建会产生的许多元字段,主要用于发布包,而我们主要是使用包,所以手工创建它注意, 打开终端工具后, 先进入到项目中,如不确定,可用 pwd 查看一下当前路径使用
composer init
创建的composer.json
大致这样
{
"name": "zhupeter/0505-1",
"authors": [
{
"name": "zhupeter",
"email": "zhuyuseng@qq.com"
}
],
"require": {}
}
下面我们手工创建一个composer.josn
{}
啥也不用写,为空即可, 执行以下命令
# 切换到项目目录,如0505-1,输入以下指令
composer dumpautoload
# 输出: Generating autoload files 翻译: 生成自动加载器文件
# 该指令主要用于创建或更新composer的自动加载器
# 如果是第一次执行,你会看到在当前项目根目录下多出一个vendor目录
# 该vendor目录下面有一个composer目录有一个autoloaded.php文件
composer.json
内容如下:
{
"autoload": {
"classmap": ["lib/", "src/", "app/Test1.php"]
}
}
终端执行: composer dmupautoload
将指定目录下的类或指定的类文件注册到 compser 中所谓类注册,就是写到`vendor/composer/autoload_classmap.php
类映射文件中特别注意: lib,src 目录, app/Test1.php 必须是类文件才有效,其它非类文件使用”files”字段注册
自加加载数据库配置和公共函数库文件composer.json
文件如下:
{
"autoload": {
"classmap": ["lib/", "src/", "app/Test1.php"],
"files": ["config/database.php", "func/helper.php"]
}
}
执行: composer dumpautolaod
,查看文件注册器:vendor/composer/autoload_files.php
可以看到,已正确注册成功
PSR
:(Standard Recommendations)PHP 推荐标标准的简写,由 PHP FIG 组织制定的 PHP 开发规范PSR-4
{
"autoload": {
"classmap": ["lib/", "src/", "app/Test1.php"],
"files": ["config/database.php", "func/helper.php"],
"psr-4": {
"admin\\": "admin/"
}
}
}
admin\controller\...
等
// 如果composer.json : psr-4是: "admin\\": "admin/"
namespace admin
// 命名空间: admin
// 则在admin目录下查找到User1类
class User1
{
//...
}
// 访问方式
admin\User;
// 如果类文件是
namespace admin\controller;
// 命名空间: admin\controller
// 则在admin/controller目录下查找到User2类
class User2
{
//...
}
// 访问方式: 子空间
admin\controller\User
引用方式有二种
composer.json
添加require
字段, 用composer install
下载安装该包composer require 包
安装该包,并更新composer.json
手工安装一个包: 验证码包 yangyezi/captcha
composer.json
"require": {
"youngyezi/captcha": "6.0.*"
}
```
终端执行composer install
, 将会自动下载 captcha观察 vendor 目录,会发现除了 captcha 目录外,还有许多其它目录和文件,这就是该包的依赖,也一并下载安装了同时,还创建一个叫composer.lock
的配置锁文件,将当前版本锁定,这样大家都可以得到一个一致的开发环境
自动安装一个常用的数据库模型包:
composer require catfan/medoo
vendor
目录查看该包文件composer.json
观察require
字段composer.lock
观察该包的版本号下面演示一下,如何使用第三方的组件包
还有一种,可以直接从第三方包,创建一个本地项目,用 thinkphp,laravel 等框架
topthink/think
:composer create-project topthink/think
composer
的项目,只要一个包名,就可以根据这个包创建一个完整项目git clone
后, 再将这个包依赖安装到vendor
目录topthink/frameword
:composer require topthink/framework
实战:安装ThinkPHP框架
# 安装thinkphp框架,并创建一个项目: blog,即将整个框架安装到blog项目目录中
# 默认安装最新稳定版
composer create-project topthink/think blog
# 测试一下,访问 blog/public/index.php,看到欢迎页面, 表示tp项目安装成功
# 可以创建项目时,指定基于composer包的版本号,如5.0
composer create-project topthink/think blog 5.0.*
# 如果只使用composer require topthink/framework,则不会创建blog目录以及内部目录和文件
# 大家课后可以测试一下
composer selfupdate
composer update 空/*/包名列表空格分隔
composer remove 包
composer show
composer help install
composer
回车后可以看到相关推荐
© 2020 asciim码
人生就是一场修行