thinkphp5.1 unterstützt keine Extras. Die Konfigurationsfunktion in thinkphp5.1 hat die Unterstützung für Extras eingestellt. Sie können die Funktion „editConfig($arr = [], $user='admin'){...} einfügen. " Code in Diese Funktion kann global in common.php im App- oder Anwendungsordner verwendet werden.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, ThinkPHP Version 5, Dell G3-Computer.
Unterstützt thinkphp5.1 zusätzliche Funktionen?
Nicht unterstützt.
ThinkPHP5.1 verwendet Dateien als Konfigurationsdateien
ThinkPHP5.1 verwendet Dateien als Konfigurationsdateien
Bei Verwendung von Tp5.1 (eingeschränkte Version) als App-Hintergrund stellen Benutzer häufig Anfragen und jeden Schritt des Vorgangs Um auf die Datenbank zuzugreifen, muss bei jedem Schritt des Vorgangs auf die Konfigurationstabelle zugegriffen werden. Durch häufiges Lesen wird der Datenverkehr im Hintergrund überwacht und festgestellt, dass fast 30 % der Anforderungen darauf zugreifen Daher habe ich beschlossen, die Konfiguration lokal zu korrigieren.
Nach der Suche nach verschiedenen Informationen konnte ich jedoch nicht feststellen, dass die von Tp5 bereitgestellte Funktion Config::set() .1 kann die Konfigurationsdatei nur dynamisch ändern und ist auf diesen Controller beschränkt. Die tatsächliche Konfiguration hat sich nicht geändert, was offensichtlich nicht unseren Anforderungen entspricht
Nach Rücksprache mit mehreren Quellen fand ich diesen Artikel am besten zuverlässig, aber der eigentliche Test ist ungültig
Nachdem ich die Konfigurationsfunktion eingegeben habe, stellte ich fest, dass die Konfigurationsfunktion in Tp5.1 nicht mehr unterstützt wurde, also habe ich sie selbst neu geschrieben
Keine weiteren Worte, einfach gewaltsam codieren .
/** * 修改扩展配置文件 * @param array $arr 需要更新或添加的配置 * @param string $user 修改人 * @return bool */ function editConfig($arr = [] ,$user='admin') { if (is_array($arr)) { //获取文件名 $filename = 'business.php'; //获取配置文件环境变量位置(请确保开启权限,如若报错,请改为绝对路径) $filepath = Env::get('CONFIG_PATH'). $filename; //判定配置文件是否存在 if (!file_exists($filepath) ) { if(!fopen($filepath, "w")){ return 'PermissionError1'; } } //判定权限是否足够 if (!is_writable($filepath)) { return 'PermissionError2'; } //遍历整个配置文件 $conf = include $filepath; foreach ($arr as $key => $value) { $conf[$key] = $value; } //记录修改者 $time = date('Y/m/d H:i:s'); $str = "<?php\r\n/**\r\n * 由".$user."修改.\r\n * $time\r\n */\r\nreturn [\r\n"; //写入配置文件 foreach ($conf as $key => $value) { if(is_array($value)){ $str.="\t'$key'=>[\r\n"; foreach ($value as $ikey=>$r) { if(is_numeric($ikey)){ $str .= "\t\t'$r',"; $str .= "\r\n"; }else{ $str .= "\t\t'$ikey' => '$r',"; $str .= "\r\n"; } } $str = rtrim($str,','); $str .= "\t],"."\r\n"; } else{ $str .= "\t'$key' => '$value',"; $str .= "\r\n"; } } $str .= '];'; //关闭文件 $result = file_put_contents($filepath, $str); if($result){ return 'success'; } else { return $result; } } else { return 'error'; } }
Fügen Sie diesen Code in common.php im App- (oder Anwendungs-)Ordner ein, und Sie können ihn global verwenden, um die Konfigurationsdatei zu ändern.
Beispiel:
Erstellen Sie eine business.php-Datei im Konfigurationsordner
Rufen Sie die geänderte Funktion im Controller auf
public function setBusiness(){ $arr = array( "WEB" => [ "web_status"=>'1', 1,3,4 ], ); $result=editConfig($arr,'admin123'); if($result=='success'){ echo ('修改成功'); }elseif($result=='error'){ echo ('修改失败'); } elseif($result=='PermissionError'){ echo ('文件无权限,请联系管理员'); } }
unter dem Konfigurationsordner. Die Konfigurationsdatei wird in
<?php /** * 由admin123修改. * 2019/11/22 13:00:27 */ return [ 'WEB'=>[ 'web_status' => '1', '1', '3', '4', ], ];
geändert. Als nächstes können Sie in anderen Controllern dies tun Verwenden Sie die Konfigurationsregeln direkt, um verschiedene Konfigurationsdateien zu erhalten. Informationen zu spezifischen Regeln finden Sie im Kapitel zur manuellen Konfigurationserfassung von TP5.1. Das Logikprogramm liest die Konfiguration direkt aus der Datei und der Benutzer kann die Konfiguration festlegen Erstellen Sie einen Cache oder lesen Sie ihn direkt aus Redis.
Empfohlenes Lernen: „
thinkPHP Video TutorialDas obige ist der detaillierte Inhalt vonUnterstützt thinkphp5.1 zusätzliche Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!