# 基于ThinkPHP的composer扩展包开发
* http://sunnyos.com/article-show-86.html
#### 1、在vendor下创建包的目录
例如我的包结构是:
vendor
|─ wang
|── test
|─── src
|──── first.php
|──── common.php
|─── composer.json
|─── README.md
#### 2、composer.json
~~~
{
"name": "wang/test",
"description": "first test",
"license": "Apache-2.0",
"minimum-stability": "dev",
"version": "0.1",
"authors": [
{
"name": "wang",
"email": "admin@163.com"
}
],
"require": {
"php": ">=7.2.0",
},
"autoload": {
"psr-4": {
"Test\\": "src/"//代码库的路径,前面为命名空间,src为代码存放的路径
},
"files": [
"src/common.php"//这个文件会单独引入,如果有一些需要直接执行的可以再通过files里面的文件去执行
]
}
}
~~~
#### 3、在src下写我们需要实现功能的类库,例如我写一个类脚Sunny.php,那么目录结构应该是
|─── src
|──── First.php
~~~
namespace Test;
class First{
private $name = "My name is sunny";
public function getName(){
return $this->name;
}
}
~~~
以上代码就实现了我们第一个基于composer的类库
#### 4、修改项目下的composer.json
~~~
"autoload": {
"psr-4": {
"app\\": "application",
"Yee\\": "vendor/wang/test/src/"//本地开发测试这样导入
},
"files": [
"vendor/wang/test/src/common.php"//本地开发测试这样导入
]
},
~~~
#### 5、执行命令更新自动加载文件
~~~
composer dump-autoload
~~~
#### 6、进行类库功能测试
那如果在别的地方或者tp框架里面要用它的话直接使用,例如在控制器里面使用。
~~~
<?php
namespace app\index\controller;
use Test\First;
class Index
{
public function index()
{
$first = new First();
echo $first->getName();
}
}
~~~
这样当我们访问 index 模块里面的 idnex 控制器就能看到输出 “My name is sunny” 说明我们成功了