ホームページ >PHPフレームワーク >ThinkPHP >thinkphp5.1は追加のサポートをしていますか?
thinkphp5.1 は extra をサポートしていません。thinkphp5.1 の config 関数は extra のサポートをキャンセルしました。「function editConfig($arr = [],$user='admin'){」を変更できます。 ..} ” 関数をグローバルに使用するには、アプリまたはアプリケーション フォルダーの common.php にコードを貼り付けます。
このチュートリアルの動作環境: 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'$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'; } }このコードをアプリ内のcommon.phpに貼り付けます(またはアプリケーション) フォルダーに移動すると、この関数をグローバルに使用して構成ファイルを変更できます。例:
Web サイトのルート ディレクトリの config フォルダーに business.php ファイルを作成します。 (読み取りおよび書き込み権限に注意してください)、コントローラーで変更関数を呼び出します。
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 ('文件无权限,请联系管理员'); } }config フォルダーの下の設定ファイルは
<?php /** * 由admin123修改. * 2019/11/22 13:00:27 */ return [ 'WEB'=>[ 'web_status' => '1', '1', '3', '4', ], ];に変更されます。他のコントローラでは、設定ルールを直接使用してさまざまな設定ファイルを取得できます。特定のルールについては、TP5.1 手動設定取得の章に移動してください。ロジック プログラムは、ファイルから設定を直接読み取ります。ユーザーが設定を読み取ると、キャッシュを設定したり、redis から直接読み取ることができます。推奨学習: 「
thinkPHP ビデオ チュートリアル
>>」
以上がthinkphp5.1は追加のサポートをしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。