Maison  >  Article  >  cadre php  >  thinkphp5.1 prend-il en charge davantage ?

thinkphp5.1 prend-il en charge davantage ?

藏色散人
藏色散人original
2022-12-12 09:38:301855parcourir

thinkphp5.1 ne prend pas en charge les extras. La fonction de configuration dans thinkphp5.1 a annulé la prise en charge des extras ; vous pouvez coller la "fonction editConfig($arr = [], $user='admin'){...} " code dans Cette fonction peut être utilisée globalement dans common.php dans l'application ou le dossier d'application.

thinkphp5.1 prend-il en charge davantage ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, ThinkPHP version 5, ordinateur Dell G3.

Est-ce que thinkphp5.1 prend en charge davantage ?

Non pris en charge.

ThinkPHP5.1 utilise des fichiers comme fichiers de configuration

ThinkPHP5.1 utilise des fichiers comme fichiers de configuration, enregistrements de pièges

Lors de l'utilisation de Tp5.1 (version limitée) comme arrière-plan de l'application, les utilisateurs demandent fréquemment et chaque étape de l'opération doit être done Pour accéder à la base de données, chaque étape de l'opération nécessite un accès à la table de configuration de la configuration. Une lecture fréquente met beaucoup de pression sur la base de données. Je surveille le trafic en arrière-plan et constate que près de 30 % des requêtes accèdent à la configuration. , j'ai donc décidé de corriger la configuration localement. Utiliser des fichiers comme configurations

Cependant, après avoir recherché diverses informations, je n'ai pas trouvé que la configuration pouvait être modifiée de manière statique. ne peut modifier dynamiquement que le fichier de configuration, et il est limité à ce contrôleur. La configuration réelle Le fichier n'a pas changé, ce qui ne répond évidemment pas à nos exigences

Après avoir consulté plusieurs sources, j'ai trouvé cet article le plus fiable, mais le test réel n'est pas valide.

Après avoir entré la fonction de configuration, j'ai découvert que dans Tp5.1, la fonction de configuration a été annulée, alors je l'ai réécrit moi-même

Plus de mots, codez-le simplement violemment.

/**
 * 修改扩展配置文件
 * @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;;
    }
}

Collez ce code dans common.php dans le dossier app (ou application), et vous pourrez l'utiliser globalement pour modifier le fichier de configuration

Exemple :

Créez un fichier business.php dans le dossier de configuration à la racine. répertoire du site Web (faites attention aux autorisations de lecture et d'écriture),

Appelez la fonction de modification dans le contrôleur

  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;);
        }
    }

sous le dossier config Le fichier de configuration sera modifié en

<?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;,
],
];

Ensuite, dans d'autres contrôleurs, vous pourrez directement utiliser les règles de configuration pour obtenir divers fichiers de configuration. Pour des règles spécifiques, veuillez vous rendre au chapitre d'acquisition de configuration manuelle TP5.1.

Le programme logique lit la configuration directement à partir du fichier, et l'utilisateur lit la configuration. cachez-le ou lisez-le directement depuis Redis

Apprentissage recommandé : "thinkPHP Video Tutorial"

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn