【PHP】PSR-13 Hypermedia Links(ハイパーメディアリンク)~リンク定義インタフェース~
PSR-13では、PHP開発者に、使用されるシリアライズフォーマットとは独立したハイパーメディアリンクを表す簡単で一般的な方法を提供することを目的としています。 これにより、システムは、ハイパーメディアリンクによる応答を、それらのリンクが何であるべきかを決定するプロセスとは独立して、1つ以上のワイヤフォーマットにシリアル化することができます。
PSR-13では、PHP開発者に、使用されるシリアライズフォーマットとは独立したハイパーメディアリンクを表す簡単で一般的な方法を提供することを目的としています。 これにより、システムは、ハイパーメディアリンクによる応答を、それらのリンクが何であるべきかを決定するプロセスとは独立して、1つ以上のワイヤフォーマットにシリアル化することができます。
PSR-11では、依存性注入コンテナの共通インタフェースについて定義しています。ContainerInterfaceによってフレームワークとライブラリがオブジェクトとパラメータを取得するためにコンテナをどのように使用するかを標準化することを目標としています。
CakePHPのコントローラ内にtry/catchを仕込み、トランザクションの一連の処理を実装します。データベースを絡めた処理の場合に、その整合性を保つ為に、エラーが出たら処理前の状態に戻して終了させたい場合があります。そんな時に必要なのは、トランザクションという仕組みです。また、それを実現する為に基本的には、エラーが発生し例外が投げられた際にそれをキャッチし独自の処理を実装する必要があります。
PHPからAWS S3を操作するには専用のSDKである「AWS SDK for PHP」が用いられますが、CakePHPにそれを導入し、一連のファイル操作を行います。
WEBアプリケーション構築の際に日本語だけでなく、英語や中国語などにも対応させたい場合があります。CakePHPでは、翻訳ファイルを用いてテキストや動的なメッセージを多言語化する事が可能です。
PSR-7ではHTTPメッセージを表すための一般的なインターフェイスとHTTPメッセージで使用するURIについて定義されています。
CakePHPの場合、認証コンポーネントを使う事で簡単にログイン機能を構築できますが、最終ログインの記録部分に関してはデフォルトでは機能実装は行われていませんが、ビヘイビアとイベントを使う事で簡単にその機能を構築する事ができます。
CakePHPのdelete(削除)メソッドは、デフォルトでは物理削除が行われます。でも案件によっては論理削除を行いたい場合があると思います。その時にもし、単純にdeleteカラムを作り、1を仕込んで更新する方式の場合、一つだけ潜在的な不具合の種を蒔く事になります。今回はそれらを全て解決する為に、cakephp3-soft-deleteというプラグインを使って、論理削除(ソフトデリート)を実現していきます。
PSR-6は、PHPにおけるキャッシュ操作(システム・ライブラリ作成)についての標準を策定しています。このPSRの目的は、開発者がカスタム開発を必要とせずに既存のフレームワークとシステムに統合できるキャッシュ対応ライブラリを作成できるようにすることです。
PSR-4の目的は、ネームスペースをファイルシステムパスにマップし、他のSPL登録オートローダーと共存できる相互運用可能なPHPオートローダーのルールを指定することです。 これはPSR-0に代わるものではありません。
WEBアプリケーション開発の中でデータベースのバックアップなどの裏で走らせる定時処理を構築する要件というのは少なくありません。昔であればシェルスクリプトを書いたり、フレームワークを使わない素のプログラミング言語を使って書いたりしていましたが、PHPフレームワークを使うとそれらも簡単に構築・登録・稼働を行う事が出来ます。
PSR-2は、基本的なコーディング標準であるPSR-1を拡張し、PHPコードをどのようにフォーマットするかについての共通の規則を定めています。このベーシックなガイドラインをメンバーと共有しプロジェクトを進める事で、コードの共通化や、ソースコードリーディングの時間短縮を図る事ができます。
PSR(PHP Standards Recommendations = PHP標準勧告)とは、PHP-FIG(PHP Framework Interop Group = PHPフレームワーク相互運用性グループ)が策定しているPHPコーディング規約です。
CakePHPのヘルパーと言えば、よくお世話になるFlashやForm、それにPaginatorなど色々(Textヘルパーは地味に便利)ありますが、自身でWebアプリケーションを構築時に、テンプレートへの描画を行っていて、降ってきたパラメータに対してすごく軽微な変換処理とか行いたくて、でもヘルパーとして提供されていなくて、だからコントローラに…書くと使いまわせないし、かと言ってわざわざコンポーネント化するのも…みたいな場合、ありませんか?
ファサードを定義することによって、ある一定の機能・処理をまとめておき、シンプルな作法でコールする事が出来るようになります。