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

thinkphp5.1 prend-il en charge davantage ?

Dec 12, 2022 am 09:38 AM
thinkphp5.1 extra

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'$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';
    }
}
Copier après la connexion

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"=>'1',
                1,3,4
            ],
        );
        $result=editConfig($arr,'admin123');
        if($result=='success'){
            echo ('修改成功');
        }elseif($result=='error'){
            echo ('修改失败');
        }
        elseif($result=='PermissionError'){
            echo ('文件无权限,请联系管理员');
        }
    }
Copier après la connexion

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

<?php
/**
 * 由admin123修改.
 * 2019/11/22 13:00:27
 */
return [
'WEB'=>[
'web_status' => '1',
'1',
'3',
'4',
],
];
Copier après la connexion

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 de ce site Web
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

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre Think Book et ThinkPad Quelle est la différence entre Think Book et ThinkPad Mar 06, 2025 pm 02:16 PM

Quelle est la différence entre Think Book et ThinkPad

Comment empêcher le tutoriel d'injection SQL Comment empêcher le tutoriel d'injection SQL Mar 06, 2025 pm 02:10 PM

Comment empêcher le tutoriel d'injection SQL

Comment installer le logiciel développé par ThinkPhp Comment installer le tutoriel Comment installer le logiciel développé par ThinkPhp Comment installer le tutoriel Mar 06, 2025 pm 02:09 PM

Comment installer le logiciel développé par ThinkPhp Comment installer le tutoriel

Comment réparer la vulnérabilité ThinkPHP Comment gérer la vulnérabilité ThinkPhp Comment réparer la vulnérabilité ThinkPHP Comment gérer la vulnérabilité ThinkPhp Mar 06, 2025 pm 02:04 PM

Comment réparer la vulnérabilité ThinkPHP Comment gérer la vulnérabilité ThinkPhp

Comment gérer la vulnérabilité ThinkPhp? Comment gérer la vulnérabilité ThinkPhp? Mar 06, 2025 pm 02:08 PM

Comment gérer la vulnérabilité ThinkPhp?

Quelles sont les principales considérations pour utiliser ThinkPhp dans une architecture sans serveur? Quelles sont les principales considérations pour utiliser ThinkPhp dans une architecture sans serveur? Mar 18, 2025 pm 04:54 PM

Quelles sont les principales considérations pour utiliser ThinkPhp dans une architecture sans serveur?

Comment utiliser le tutoriel ThinkPhp Comment utiliser le tutoriel ThinkPhp Mar 06, 2025 pm 02:11 PM

Comment utiliser le tutoriel ThinkPhp

Quelles sont les différences entre Think Pad et Thinkbook Quelles sont les différences entre Think Pad et Thinkbook Mar 06, 2025 pm 02:13 PM

Quelles sont les différences entre Think Pad et Thinkbook

See all articles