thinkphp5.1は追加のサポートをしていますか?

藏色散人
リリース: 2022-12-12 09:38:30
オリジナル
1878 人が閲覧しました

thinkphp5.1 は extra をサポートしていません。thinkphp5.1 の config 関数は extra のサポートをキャンセルしました。「function editConfig($arr = [],$user='admin'){」を変更できます。 ..} ” 関数をグローバルに使用するには、アプリまたはアプリケーション フォルダーの common.php にコードを貼り付けます。

thinkphp5.1は追加のサポートをしていますか?

このチュートリアルの動作環境: Windows 7 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。

thinkphp5.1 は追加のサポートをしていますか? #########サポートしません。

ThinkPHP5.1 ファイルを構成ファイルとして使用する

ThinkPHP5.1 ピットフォール レコードの構成ファイルとしてファイルを使用する

Tp5.1 (バージョン限定) をアプリのバックエンドとして使用するそのとき、ユーザーは頻繁にリクエストを行い、操作のすべてのステップでデータベースへのアクセスが必要でした。操作のすべてのステップで構成構成テーブルへのアクセスが必要でした。頻繁な読み取りにより、データベースに多大な負荷がかかりました。バックグラウンドでのトラフィックの監視、リクエストの 30% 近くが設定テーブルにアクセスしていることが判明したため、設定をローカル電話機に転送し、そのファイルを設定として使用することにしました。

しかし、さまざまな情報を照会した後、静的に変更できる設定が見つかりません。Tp5.1 が提供する Config::set() 関数は、設定ファイルを動的に変更することしかできず、このコントローラ内でのみ実行されます。実際の設定ファイルは変更されていません。要件を満たしていません。

さまざまな情報を確認した結果、この記事が最も信頼できることがわかりましたが、実際のテストは無効です。

config 関数を入力した後、Tp5 でそれが見つかりました。 1、config関数で追加サポートが解除されていたので、自分で書き直しました

早速、乱暴にコードを追加してみました

/**
 * 修改扩展配置文件
 * @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;;
    }
}
ログイン後にコピー

このコードをアプリ内のcommon.phpに貼り付けます(またはアプリケーション) フォルダーに移動すると、この関数をグローバルに使用して構成ファイルを変更できます。

例:

Web サイトのルート ディレクトリの config フォルダーに business.php ファイルを作成します。 (読み取りおよび書き込み権限に注意してください)、

コントローラーで変更関数を呼び出します。

  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;);
        }
    }
ログイン後にコピー

config フォルダーの下の設定ファイルは

<?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;,
],
];
ログイン後にコピー

に変更されます。他のコントローラでは、設定ルールを直接使用してさまざまな設定ファイルを取得できます。特定のルールについては、TP5.1 手動設定取得の章に移動してください。

ロジック プログラムは、ファイルから設定を直接読み取ります。ユーザーが設定を読み取ると、キャッシュを設定したり、redis から直接読み取ることができます。

推奨学習: 「

thinkPHP ビデオ チュートリアル

>>

以上がthinkphp5.1は追加のサポートをしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート