ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  CakePHP 投稿者:ota

オブジェクト、ファクトリ、リポジトリ、サービスの実装例

ランサーズ Advent Calendar 2019 12日目の記事です。

緑茶は生茶派のotaです。
ランサーズの開発の際用いているオブジェクト、ファクトリ、リポジトリ、サービスのCakePHPでの実装のサンプルコードを公開しました。
https://github.com/LancersDevTeam/lancers-php-sample/tree/master/ObjectFactoryRepositoryService

環境

言語 PHP7.3
フレームワーク CakePHP2.10

解説

ランサーズではオブジェクト、ファクトリ、リポジトリはデータベースのテーブルと1対1にしています(例 messagesテーブルに対してMessageRepository.php)。Serviceは複数のオブジェクトを跨ぐ処理、業務ロジックを記述しています。Lib配下にドメインごとにディレクトリを切っています。サンプルコードはメッセージ機能の例です。説明用のとてもシンプルでエッセンスだけをお伝えするコードです。

現在のランサーズではサンプルコードのようにオブジェクトにfromData()という記述を書いてそこからファクトリのfromData()を呼び出しているのですが、fromData()はオブジェクトを経由せずにファクトリから直接呼び出し、toData()はファクトリに記述する方が良いのではないかとは思います。

以上になります。開発の際の参考になりますと幸いです。
私の他の執筆記事はこちら

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
フロントエンドエンジニア
サーバーサイドエンジニア
コーポレートエンジニア
SREエンジニア

【新卒採用・その他】
21・22新卒
その他採用情報

関連記事

CakePHP3.5における各種実装例 ~ LancersTop 開発現場より ~

こんにちは エンジニアの上野 です。本日「CakePHP3.5における各種実装例」という題目で登壇するので、発表資料をアップロードします。資料として使えるようにコード例などを厚めに盛り込んだスライドですので役に立てると嬉しいです。 CakePHP3.x での各 …

CakePHP3→CakePHP4にmigrateしてみた

CakePHP Advent Calender 2019 最終日の記事です。 SREチームの金澤です。 2019/12/16にCakePHP4がリリースされました。 ランサーズでは、CakePHP2.10の現システムをCakePHP3に移行中ですが、 同時に、 …

ランサーズ開発合宿2018 バージョンアップチーム

SREチームの金澤です。 ランサーズ開発合宿のバージョンアップチームの成果についてお話させていただきます。 ランサーズのバージョンアッププロジェクト 現在、ランサーズのバージョンアップはSREチームが主導で行っています。 バージョンアップは、以下のフェーズにわ …