Heim > PHP-Framework > Denken Sie an PHP > Unterstützt thinkphp5.1 zusätzliche Funktionen?

Unterstützt thinkphp5.1 zusätzliche Funktionen?

藏色散人
Freigeben: 2022-12-12 09:38:30
Original
1917 Leute haben es durchsucht

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.

Unterstützt thinkphp5.1 zusätzliche Funktionen?

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&#39;$key&#39;=>[\r\n";
                foreach ($value as $ikey=>$r) {
                    if(is_numeric($ikey)){
                        $str .= "\t\t&#39;$r&#39;,";
                        $str .= "\r\n";
                    }else{
                        $str .= "\t\t&#39;$ikey&#39; => &#39;$r&#39;,";
                        $str .= "\r\n";
                    }
                }
                $str = rtrim($str,&#39;,&#39;);
                $str .= "\t],"."\r\n";
            } else{
                $str .= "\t&#39;$key&#39; => &#39;$value&#39;,";
                $str .= "\r\n";
            }
        }
        $str .= &#39;];&#39;;
        //关闭文件
        $result = file_put_contents($filepath, $str);
        if($result){
            return &#39;success&#39;;
        } else {
            return $result;
        }
    } else {
        return &#39;error&#39;;
    }
}
Nach dem Login kopieren

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"=>&#39;1&#39;,
                1,3,4
            ],
        );
        $result=editConfig($arr,&#39;admin123&#39;);
        if($result==&#39;success&#39;){
            echo (&#39;修改成功&#39;);
        }elseif($result==&#39;error&#39;){
            echo (&#39;修改失败&#39;);
        }
        elseif($result==&#39;PermissionError&#39;){
            echo (&#39;文件无权限,请联系管理员&#39;);
        }
    }
Nach dem Login kopieren

unter dem Konfigurationsordner. Die Konfigurationsdatei wird in

<?php
/**
 * 由admin123修改.
 * 2019/11/22 13:00:27
 */
return [
&#39;WEB&#39;=>[
&#39;web_status&#39; => &#39;1&#39;,
&#39;1&#39;,
&#39;3&#39;,
&#39;4&#39;,
],
];
Nach dem Login kopieren

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 Tutorial

Das 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage