# 基于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” 說明我們成功了