update
自定义扩展范例:
某些情况下,不便于公开通过composer来安装扩展,可通过tp框架的extend目录来安装扩展。
composer
extend
自定义扩展与composer扩展目录比较
假如有一个composer扩展extdemo,那么他的目录大概是这样: 扩展根目录:wwwroot\vendor\ichynul\extdemo\
extdemo
wwwroot\vendor\ichynul\extdemo\
── assets (资源,不需则留空,发布时复制到`/public/assets/`) ├── css ├── images └── js ── data (安装或卸载脚本,不需要安装则留空) ├── install.sql └── uninstall.sql ── src (源码目录) ├── admin (admin模块) │ ├── controller │ ├── ... │ ├── model │ ├── ... └── common │ └── Module.php (模块定义) ├── common.php ├── config.php (扩展自定义配置) └── helper.php (扩展加载) ── composer.json ── LICENSE.txt ── README.md
PS : tp框架的extend加载原理。自动查找extend目录下的目录和文件,根据目录结构转换为对应的命名空间。 thinkphp\library\Loader.php (line:114):
thinkphp\library\Loader.php
// 自动加载extend目录 self::addAutoLoadDir($rootPath . 'extend');
把它改造为自定义扩展: 根目录:wwwroot\extend\extdemo\
wwwroot\extend\extdemo\
── assets (资源,不需则留空,发布时复制到`/public/assets/`) ├── css ├── images └── js ── data (安装或卸载脚本,不需要安装则留空) ├── install.sql └── uninstall.sql ── admin (admin模块) ├──controller ├──... ├──model ├──... common └── Module.php (模块定义) ── config.php (扩展自定义配置) ── common.php ── LICENSE.txt ── README.md
改造要点:
composer.json
src
helper.php
Module.php
$root
protected $root = __DIR__ . '/../../';
protected $root = __DIR__ . '/../';
extdemo\common\Module
LICENSE.txt
readme.md
── extend ├── mymouule1(支持) ├── mymouule2(支持) └── hismouule3(支持)
不支持二级的扩展,如:
── extend └── mymouule │ ├── mymouule1 (二级目录下不支持) │ └── mymouule2 (二级目录下不支持) └── hismouule3(支持)
所有如果你同时使用其他人的扩展,给自定义扩展起名是要避免命名冲突
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
自定义扩展范例:
某些情况下,不便于公开通过
composer
来安装扩展,可通过tp框架的extend
目录来安装扩展。自定义扩展与
composer
扩展目录比较假如有一个
composer
扩展extdemo
,那么他的目录大概是这样: 扩展根目录:wwwroot\vendor\ichynul\extdemo\
PS : tp框架的
extend
加载原理。自动查找extend
目录下的目录和文件,根据目录结构转换为对应的命名空间。thinkphp\library\Loader.php
(line:114):把它改造为自定义扩展: 根目录:
wwwroot\extend\extdemo\
改造要点:
composer.json
。src
。代码直接放扩展根目录。helper.php
。Module.php
中$root
定义,由于代码从src
目录往上提了一级,所以:protected $root = __DIR__ . '/../../';
改为:protected $root = __DIR__ . '/../';
helper.php
来加载扩展,所以需要在【扩展管理】-【tpext基础】的配置中加入extdemo\common\Module
,刷新。LICENSE.txt
文件readme.md
,由于自定义插件不能加载其他composer
扩展,若你的自定义扩展依赖于其他composer
扩展,可在其中说明需要安装哪些。不支持二级的扩展,如:
所有如果你同时使用其他人的扩展,给自定义扩展起名是要避免命名冲突