Skip to content

Commit 4a20aeb

Browse files
committed
新增强制重新获取配置参数
修复Service::upgrade方法不生效的BUG
1 parent 0a23d81 commit 4a20aeb

File tree

3 files changed

+64
-28
lines changed

3 files changed

+64
-28
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"homepage": "https://github.com/karsonzhang/fastadmin-addons",
55
"license": "Apache-2.0",
66
"minimum-stability": "dev",
7-
"version": "1.1.11",
7+
"version": "1.2.0",
88
"authors": [
99
{
1010
"name": "Karson",

src/Addons.php

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
/**
99
* 插件基类
1010
* Class Addons
11-
* @author Byron Sampson <[email protected]>
11+
* @author Byron Sampson <[email protected]>
1212
* @package think\addons
1313
*/
1414
abstract class Addons
@@ -20,6 +20,8 @@ abstract class Addons
2020
protected $error;
2121
// 插件目录
2222
public $addons_path = '';
23+
// 插件标识
24+
protected $addonName = '';
2325
// 插件配置作用域
2426
protected $configRange = 'addonconfig';
2527
// 插件信息作用域
@@ -29,9 +31,13 @@ abstract class Addons
2931
* 架构函数
3032
* @access public
3133
*/
32-
public function __construct()
34+
public function __construct($name = null)
3335
{
34-
$name = $this->getName();
36+
$name = is_null($name) ? $this->getName() : $name;
37+
38+
//设置插件标识
39+
$this->addonName = $name;
40+
3541
// 获取当前插件目录
3642
$this->addons_path = ADDON_PATH . $name . DS;
3743

@@ -51,15 +57,18 @@ public function __construct()
5157
* @param string $name
5258
* @return array
5359
*/
54-
final public function getInfo($name = '')
60+
final public function getInfo($name = '', $force = false)
5561
{
5662
if (empty($name)) {
5763
$name = $this->getName();
5864
}
59-
$info = Config::get($name, $this->infoRange);
60-
if ($info) {
61-
return $info;
65+
if (!$force) {
66+
$info = Config::get($name, $this->infoRange);
67+
if ($info) {
68+
return $info;
69+
}
6270
}
71+
$info = [];
6372
$info_file = $this->addons_path . 'info.ini';
6473
if (is_file($info_file)) {
6574
$info = Config::parse($info_file, '', $name, $this->infoRange);
@@ -75,15 +84,18 @@ final public function getInfo($name = '')
7584
* @param string $name 可选模块名
7685
* @return array
7786
*/
78-
final public function getConfig($name = '')
87+
final public function getConfig($name = '', $force = false)
7988
{
8089
if (empty($name)) {
8190
$name = $this->getName();
8291
}
83-
$config = Config::get($name, $this->configRange);
84-
if ($config) {
85-
return $config;
92+
if (!$force) {
93+
$config = Config::get($name, $this->configRange);
94+
if ($config) {
95+
return $config;
96+
}
8697
}
98+
$config = [];
8799
$config_file = $this->addons_path . 'config.php';
88100
if (is_file($config_file)) {
89101
$temp_arr = include $config_file;
@@ -99,7 +111,7 @@ final public function getConfig($name = '')
99111

100112
/**
101113
* 设置配置数据
102-
* @param $name
114+
* @param $name
103115
* @param array $value
104116
* @return array
105117
*/
@@ -116,7 +128,7 @@ final public function setConfig($name = '', $value = [])
116128

117129
/**
118130
* 设置插件信息数据
119-
* @param $name
131+
* @param $name
120132
* @param array $value
121133
* @return array
122134
*/
@@ -155,10 +167,22 @@ final public function getFullConfig($name = '')
155167
*/
156168
final public function getName()
157169
{
170+
if ($this->addonName) {
171+
return $this->addonName;
172+
}
158173
$data = explode('\\', get_class($this));
159174
return strtolower(array_pop($data));
160175
}
161176

177+
/**
178+
* 设置插件标识
179+
* @param $name
180+
*/
181+
final public function setName($name)
182+
{
183+
$this->addonName = $name;
184+
}
185+
162186
/**
163187
* 检查基础配置信息是否完整
164188
* @return bool
@@ -179,9 +203,9 @@ final public function checkInfo()
179203
* 加载模板和页面输出 可以返回输出内容
180204
* @access public
181205
* @param string $template 模板文件名或者内容
182-
* @param array $vars 模板输出变量
183-
* @param array $replace 替换内容
184-
* @param array $config 模板参数
206+
* @param array $vars 模板输出变量
207+
* @param array $replace 替换内容
208+
* @param array $config 模板参数
185209
* @return mixed
186210
* @throws \Exception
187211
*/
@@ -200,9 +224,9 @@ public function fetch($template = '', $vars = [], $replace = [], $config = [])
200224
* 渲染内容输出
201225
* @access public
202226
* @param string $content 内容
203-
* @param array $vars 模板输出变量
204-
* @param array $replace 替换内容
205-
* @param array $config 模板参数
227+
* @param array $vars 模板输出变量
228+
* @param array $replace 替换内容
229+
* @param array $config 模板参数
206230
* @return mixed
207231
*/
208232
public function display($content, $vars = [], $replace = [], $config = [])
@@ -217,7 +241,7 @@ public function display($content, $vars = [], $replace = [], $config = [])
217241
* 渲染内容输出
218242
* @access public
219243
* @param string $content 内容
220-
* @param array $vars 模板输出变量
244+
* @param array $vars 模板输出变量
221245
* @return mixed
222246
*/
223247
public function show($content, $vars = [])
@@ -231,7 +255,7 @@ public function show($content, $vars = [])
231255
/**
232256
* 模板变量赋值
233257
* @access protected
234-
* @param mixed $name 要显示的模板变量
258+
* @param mixed $name 要显示的模板变量
235259
* @param mixed $value 变量的值
236260
* @return void
237261
*/

src/addons/Service.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -532,14 +532,26 @@ public static function upgrade($name, $extend = [])
532532

533533
// 执行升级脚本
534534
try {
535-
$class = get_addon_class($name);
536-
if (class_exists($class)) {
537-
$addon = new $class();
535+
$addonName = ucfirst($name);
536+
//创建临时类用于调用升级的方法
537+
$sourceFile = ADDON_PATH . $name . DS . $addonName . ".php";
538+
$destFile = ADDON_PATH . $name . DS . $addonName . "Upgrade.php";
538539

539-
if (method_exists($class, "upgrade")) {
540-
$addon->upgrade();
541-
}
540+
$classContent = str_replace("class {$addonName} extends", "class {$addonName}Upgrade extends", file_get_contents($sourceFile));
541+
542+
//创建临时的类文件
543+
file_put_contents($destFile, $classContent);
544+
545+
$className = "\\addons\\" . $name . "\\" . $addonName . "Upgrade";
546+
$addon = new $className($name);
547+
548+
//调用升级的方法
549+
if (method_exists($addon, "upgrade")) {
550+
$addon->upgrade();
542551
}
552+
553+
//移除临时文件
554+
@unlink($destFile);
543555
} catch (Exception $e) {
544556
throw new Exception($e->getMessage());
545557
}

0 commit comments

Comments
 (0)