TPフレームワークのFメソッドの戻り値について
コードは実際には非常に単純ですが、F メソッドを使用してデータをファイルにキャッシュします。ファイルが作成され、データが書き込まれますが、F メソッドは NULL を返します。これは不可解です。
public function updateCache(){ $db = M('category'); $data = $db->select(); $f = F('data',$data) var_dump($f);//////输出的是null }
実際、F メソッドの戻り値を使用して、キャッシュが成功したかどうかを判断したいだけです...これが私の目的です...しかし、私は長い間問題を探してきましたが、 F メソッドが NULL を返す理由がわかりません。
ディスカッションへの返信(解決策)
そんなはずはありません! F 関数の定義を投稿してください
すべきではありません。 F 関数定義を投稿してください
TP フレームワークの F 関数の最新バージョンです... ボス
投稿できないですか?ダウンロードしてもいいですか?
投稿しませんか?ダウンロードしてもいいですか?
function F($name, $value='', $path=DATA_PATH) { static $_cache = array(); $filename = $path . $name . '.php'; if ('' !== $value) { if (is_null($value)) { // 删除缓存 if(false !== strpos($name,'*')){ return false; // TODO }else{ unset($_cache[$name]); return Think\Storage::unlink($filename,'F'); } } else { Think\Storage::put($filename,serialize($value),'F'); // 缓存数据 $_cache[$name] = $value; return ; } } // 获取缓存数据 if (isset($_cache[$name])) return $_cache[$name]; if (Think\Storage::has($filename,'F')){ $value = unserialize(Think\Storage::read($filename,'F')); $_cache[$name] = $value; } else { $value = false; } return $value;}
F 関数は、キャッシュを読み取るときにデータを返します。もちろん、キャッシュに書き込むときに null を返します。
データが必要ですか? $data = F('data');
F 関数は、キャッシュを読み取るときにデータを返します。もちろん、キャッシュに書き込むときは null が返されます。 $data = F('data');
public function put($filename,$content,$type=''){ $dir = dirname($filename); if(!is_dir($dir)) mkdir($dir,0755,true); if(false === file_put_contents($filename,$content)){ E(L('_STORAGE_WRITE_ERROR_').':'.$filename); }else{ $this->contents[$filename]=$content; return true; } }
これは呼び出された Put メソッドです
17 行目の return は間違っています。あまりにも不注意です
下位バージョンの return によれば、
return strlen($value); と書くべきです
下位バージョンに従って返すには、
return strlen($value); と書く必要があります。
8 行 return false; // TODO
11 行 return ThinkStorage::unlink($filename,'F');
22 行 return $_cache[$name]
Return false; // Todo
Return Thinkstorage :: unlink ($ FILENAME, 'F');
Ring 17 Return
Return $ _Cache [$ Name]
Return $ 29 Value;帰る場所はここだけ?渡したパラメーターに基づいて手動で問題を導き出すことで、問題がどこにあるのかを特定できますか?
strlen が Null を返す理由は、$value が配列であるためです
ThinkStorage::put($filename,serialize($value),'F'); を直接返す必要があると思います
( $filename,serialize($value),'F'); このように変更できますか?
8 行 return false; // TODO
11 行 return ThinkStorage::unlink($filename,'F');
17 行が戻ります
22 行が $_cache[$name] を返します
戻るのはここだけではないでしょうか?渡したパラメーターに基づいて手動で問題を導き出すことで、問題がどこにあるのかを特定できますか?
公式の関数では、キャッシュに成功するとnull値を返すことになっているようですが…
$valueを直接返すだけでも大丈夫です
ただし、$valueには大量のコンテンツが含まれている可能性があり、必要ありません
したがって、このように返すこともできます return ! Empty($value);
書き込みキャッシュなので、$value は書き込まれた内容を表します
空でないことは成功を意味します
要するに、何を返すか既存のアルゴリズムに依存します
TP は単なるツールです。これにより、あなたが彼に合わせるのではなく、彼があなたに適応できるようになります
$value を直接返すこともできます ただし、$value には多くのコンテンツが含まれる可能性があります必要ありません
したがって、このように返すこともできます return ! empty($value);
書き込みキャッシュであるため、$value は書き込まれた内容を表します
空でないことは成功を意味します
要するに、返すかは既存のアルゴリズムに依存します
TP は単なるツールであり、あなたではなくあなたに適応させることができます 彼に合わせてください
そうですね、フレームワークを使用するとき、私はいつもそれを書いた人が違うと感じます私の考えは正しいです。ありがとう!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

明確で包括的なドキュメントを作成することは、Golang フレームワークにとって非常に重要です。ベスト プラクティスには、Google の Go コーディング スタイル ガイドなど、確立されたドキュメント スタイルに従うことが含まれます。見出し、小見出し、リストなどの明確な組織構造を使用し、ナビゲーションを提供します。スタート ガイド、API リファレンス、概念など、包括的で正確な情報を提供します。コード例を使用して、概念と使用法を説明します。ドキュメントを常に最新の状態に保ち、変更を追跡し、新機能を文書化します。 GitHub の問題やフォーラムなどのサポートとコミュニティ リソースを提供します。 API ドキュメントなどの実践的なサンプルを作成します。

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

Go フレームワーク開発における一般的な課題とその解決策は次のとおりです。 エラー処理: 管理にはエラー パッケージを使用し、エラーを一元的に処理するにはミドルウェアを使用します。認証と認可: サードパーティのライブラリを統合し、資格情報を確認するためのカスタム ミドルウェアを作成します。同時処理: ゴルーチン、ミューテックス、チャネルを使用してリソース アクセスを制御します。単体テスト: 分離のために getest パッケージ、モック、スタブを使用し、十分性を確保するためにコード カバレッジ ツールを使用します。デプロイメントとモニタリング: Docker コンテナを使用してデプロイメントをパッケージ化し、データのバックアップをセットアップし、ログ記録およびモニタリング ツールでパフォーマンスとエラーを追跡します。

Go フレームワークの学習には、フレームワークへの過度の依存と柔軟性の制限という 5 つの誤解があります。フレームワークの規則に従わない場合、コードの保守が困難になります。古いライブラリを使用すると、セキュリティと互換性の問題が発生する可能性があります。パッケージを過度に使用すると、コード構造が難読化されます。エラー処理を無視すると、予期しない動作やクラッシュが発生します。
