弊社技術ブログへお越しのみなさま、こんにちは。2年も前にリリースされたものなので、何故今更、という話になると思います。有用性を世に広めるためにこの記事を作り始めました。実装方法と利用方法どのようなケースで実装するか実装時の小ネタの4点に絞ってご紹介しようと思います。いう機能が搭載されたか」を紹介します。概要に関しては公式のマニュアルが非常に明快な解説をしているので、是非お読みください。は...実装コードの再利用性を向上させ、アプリケーションの実装コードをよりシンプルにするために搭載されました。導入された背景は、PHPの「多重継承が出来ない」という問題を解決するという部分にあります。複数のクラスで大体同じような機能となる、データベースやキャッシュなどの、データへのアクセスSingletonやFactoryなどのデザインパターンの実装モデルクラスのアクセサ...などを、個々のクラスで実装すると...ソースコードのコピーアンドペーストが増えます。観点から出来るだけ使わないようにするのが良いとされています。WikipediaこれまでのPHPでは継承を行うことで実装コードを再利用することが可能でしたが、例えば「モデルデータの操作が出来て、かつインスタンスを共有したい(Singleton)クラス」があると、多重継承が出来ないので、どちらかは実装を書くか依存性の注入※の実装など少しばかり面倒なことをしなければなりません。今回は紹介しませんが、クラス間の依存関係を疎にするためのデザインパターンの一つです。継承と異なり、クラスとの間に縦方向の関係を構築しません。場合はこのように横方向にいくらでもクラスを拡張することが可能なのです。インターフェイスを用いれば、「(外部から見て)XXが出来るクラス」という型を作ることは出来ます。結局「XXが出来るクラス」を実装する際に、毎回その「XXが出来る」ように中身を作らなければなりません(例として、イテレータの実装など)。「XXが出来る」という振る舞いがある程度汎用化されていて、複数の異なるクラスにおいてその振る舞いが使われる場合は、同じ実装を流用したくなります。※「一定の振る舞いをモジュール化し、クラスに組み込む」という概念は、既に他の言語でも実装されていることがあります。実装すればいいのかと申しますと、ほとんどの場合においてライブラリの実装フレームワークの実装の一部として使われるのではないかと思います。利用だけする、というスタイルです。知識は、アプリケーション開発者よりフレームワーク開発者が知るべきではないかと感じています(もちろん、アプリケーション開発者も、これをどうやって利用するかを知る必要はあります)。自体の実装はクラスとほとんど同じ書き方で可能です。出来ないこともあります。よる定数宣言は不可能クラスを継承したり、インターフェース実装を宣言出来ない(クラスじゃないので)その振る舞いを利用するクラス側の実装も簡単です。キーワードを使うことで回避することが可能です。}}※プロパティ(メンバ変数)の宣言では、名前の衝突が許されていません。メソッドの可視性(publicなど)を変更することも可能です。実装すべきか、という所が重要になってくると思います。全てではありませんが、私が思いついた実装例をいくつかご紹介します。基本的な実装というのはある程度同じであることが多いのではないでしょうか。使って実装した方が拡張性に富んだ設計になり得ます。して簡単にかけるプロパティへのアクセサですが、PHPでは中々面倒です。オーバーロードメソッドを実装することで、簡単にアクセサが利用出来ます。実装する際、少し気になったネタもご紹介します。継承と併用することも可能です。その親クラスに実装されているものとしてアクセス出来ます。メソッドを見に行ってそれを呼び出します。側のメソッドが使えませんので注意です。プロパティ(メンバー変数)を実装することも可能です。メソッドと違ってプロパティの名前の衝突は回避させることが出来ません。実装クラスでのプロパティ衝突も同様のエラーが発生します。つけるなどで問題無いと思います。定義してもらったりするのがいいかと思います。}}長々と書いてしまいましたが、本日はこれで以上です。使いはじめる際の参考になればと思います。今回の記事を作成するにあたり、以下の記事を参考にさせて頂きました。ありがとうございます。Design!若干内容は異なりますが、社内勉強会で公開したプレゼンの資料もこっそり。»ブログ記事検索このブログについてこのブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。開催されます!【1月25日放送】テレビ北海道(TVh)「けいナビ~応援!どさんこ経済~」に取材いただきました!【中途採用向け】1月21日(火)札幌本社で会社説明会を開催いたします!あけましておめでとうございます!2020年もよろしくお願いいたします。