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

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よりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

【参加募集】第1回 CakePHP 3.4 ソースコードリーディング 3/22(水) 19:30 渋谷

自社サービスの大規模アップデートにあたり、最新版 CakePHP 3.4 の社内勉強会を続けています。 どうせなら、社外の CakePHPer な方々と共に学びあったり、アドバイスを頂きたいと思い、公開勉強会を立てました。 https://lancers-en …

PHPカンファレンス福岡 2017に登壇しました

インフラエンジニアの金澤です。 2017/06/10(土)に、PHPカンファレンス福岡に登壇させていただきました。 今回、30分枠とLT枠(5分)の2枠を採択していただきました。 登壇内容 CakePHP 1.3 + PHP 5.3 → CakePHP 3 + …

CakePHP 3.4 Console で Rails Console のように SQL クエリログを表示する方法

ステラ・ルーのぬいばが欲しい nakajiman です。 Rails Console と同じように CakePHP 3 Console を使いたいんですが、CakePHP Console ってモデルを操作しても、Console にクエリログが表示されないんです …