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

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新卒
その他採用情報

関連記事

ランサーズのNginx+PHP-FPM化

インフラエンジニアの金澤です。 以前ブログでお話しました、ランサーズのNginx+PHP-FPM化が一段落したのでまとめました。 移行の目的 以前は、Apache 2.2 + mod_php の構成で動作していました。 以前のブログでもお話ししましたように、P …

ランサーズ開発ランチ(Lunchers#5)〜PHPカンファレンス福岡2018予行練習編〜

初めまして。 6月に開発部の採用・広報として入社いたしました@miyatachiharu_L (宮田)です! ランサーズのエンジニアさんたちの魅力を、 沢山の方に発信していけるように、頑張ります! どうぞ、よろしくお願いいたします。   ランサーズは …

PHPカンファレンス2017 に登壇してきました

初めて登壇してきました、開発部のakin.です。 10月8日に開催されたPHPカンファレンス2017に25分枠で採択して頂き登壇してきました。 また、スポンサーとしてランサーズのブース出展も行いました。