基于ThinkPHP的composer扩展包开发

时间: 2018-08-24 12:10 栏目: PHP 浏览: 452 赞: 97 踩: 28 字体:

以下为本篇文章全部内容:

基于ThinkPHP的composer扩展包开发

1、在vendor下创建包的目录

例如我的包结构是:

vendor

|─ sunnyos

|── yee-addons

|─── src

|──── Sunny.php

|──── common.php

|─── composer.json

|─── README.md

2、composer.json

{
  "name": "sunnyos/sunny",
  "description": "sunny test",
  "license": "Apache-2.0",
  "minimum-stability": "dev",
  "version": "0.1",
  "authors": [
    {
      "name": "sunny",
      "email": "admin@sunnyos.com"
    }
  ],
  "require": {
    "php": ">=7.2.0",
  },
  "autoload": {
    "psr-4": {
      "Yee\\": "src/"//代码库的路径,前面为命名空间,src为代码存放的路径
    },
    "files": [
      "src/common.php"//这个文件会单独引入,如果有一些需要直接执行的可以再通过files里面的文件去执行
    ]
  }
}

3、在src下写我们需要实现功能的类库,例如我写一个类脚Sunny.php,那么目录结构应该是

|─── src

|──── Sunny.php

namespace Yee;
class Sunny{
    private $name = "My name is sunny";
    
    public function getName(){
        return $this->name;
    }
}

以上代码就实现了我们第一个基于composer的类库

4、修改项目下的composer.json

"autoload": {
    "psr-4": {
      "app\\": "application",
      "Yee\\": "vendor/sunnyos/yee-addons/src/"//本地开发测试这样导入
    },
    "files": [
      "vendor/sunnyos/yee-addons/src/common.php"//本地开发测试这样导入
    ]
  },

5、执行命令更新自动加载文件

composer dump-autoload

6、进行类库功能测试

那如果在别的地方或者tp框架里面要用它的话直接使用,例如在控制器里面使用。

<?php
namespace app\index\controller;
use Yee\Sunny;
class Index
{
    public function index()
    {
        $sunny = new Sunny();
        echo $sunny->getName();
    }
}

这样当我们访问 index 模块里面的 idnex 控制器就能看到输出 “My name is sunny” 说明我们成功了