ThinkPHP バージョン 3.1.3 には、注目に値する機能がいくつかあります。以下で簡単に説明します。
1. 例外の改善
新しいバージョンの ThinkPHP3.1.3 は、例外クラス ThinkException を書き直し (実際、システムの Exception クラスを直接継承するように完全に単純化されています)、例外ロジックを改善して、それを Think クラスにカプセル化します。主に、Think クラスの appException メソッドと halt 関数が関係します。
また、改善された例外処理により、システムの致命的なエラーのキャプチャがサポートされます。その原則は、
したがって、システムの致命的なエラーは、統合された例外テンプレート インターフェイスを通じてフレンドリーな方法でプロンプトを表示できます。
2. PDOパラメータバインディングのサポート
ThinkPHP3.* バージョンはハイブリッド データベース ドライバーを使用し、PDO モードもサポートしていますが、以前のバージョンは PDO 用に最適化されておらず、単なるカプセル化であったためです。バージョン 3.1.3 では、PDO と Sqlarv のサポートが強化されています。これは、PDO と sqlsrv の両方がパラメーター バインディング操作をサポートしているためです (パラメーター バインディングをサポートしていないデータベースとドライバーはパラメーター バインディング関数を使用できないことに注意してください)。
システムは、自動バインドと手動バインドの 2 種類のパラメータ バインド操作をサポートしています。
自動バインディング 書き込み操作 (ここでのデータの追加と更新を含む) の場合、sqlsrv は値を渡すことによってのみパラメーター バインディングを使用するため、フレームワークは関連するデータをパラメーター バインディングに自動的に変換して実行します。 UTF8 データ書き込みをサポートできるようにすることはできますが、データを書き込むたびに手動でパラメータ バインディングを使用すると、さらに面倒になります。手動パラメータ バインドとの競合を避けるために、自動パラメータ バインドではフィールド名の md5 エンコードが使用されます。
手動バインディング。通常はクエリ条件などに使用され、バインドコヒーレント操作メソッドを使用します。例:
3. 変数の安全な取得方法を追加しました
以前のバージョンでは、_post_get などの Action クラスのメソッドを使用して変数を安全に取得していましたが、新しいバージョンでは変数をコントローラー内でのみ取得できるという制限がありました。どこでも使用できます。
使用方法:
配列全体の取得もサポートしています。例:
I メソッドを使用する場合、システムの VAR_FILTERS および DEFAULT_FILTER フィルタリング構成は引き続き有効です。
4. where メソッドへの複数の呼び出し
モデルクラスの where メソッドは、配列モードでの複数の呼び出しをサポートできます。例:
where 条件が複数ある場合、後の条件は前の条件にマージされ、最終的な条件は次と同等になります。
5. コントローラーの assign メソッドは一貫した操作をサポートします
コントローラーで使用できます:
または: