ホームページ  >  記事  >  バックエンド開発  >  ドメインモデリング基本クラス

ドメインモデリング基本クラス

WBOY
WBOYオリジナル
2016-07-25 08:48:161069ブラウズ
遅延読み込みと一意の登録を実装しました
Java では工場と倉庫の概念を導入する必要がありますが、PHP では同じ機能を完了するのに 2 ~ 3 行のコードのみが必要です
  1. /**
  2. * ドメイン モデルの親クラス
  3. * 遅延データの読み込みと一意としての登録を実装
  4. * @author liuxu
  5. *
  6. */
  7. 抽象クラス Domain
  8. {
  9. protected $_id;
  10. protected $_id2;
  11. protected $_fields = array();
  12. protected $_loadedById = false;
  13. static protected $_objs;
  14. プライベート関数 __construct($id,$id2=0)
  15. {
  16. $this->_id = $id?$id:0;
  17. $this->_id2 = $id2?$id2: 0;
  18. }
  19. 静的パブリック関数ファクトリー($id,$id2=0)
  20. {
  21. $class = get_called_class();
  22. if(!isset(self::$_objs[$class][$id][$ id2]))//一意として登録します
  23. {
  24. self::$_objs[$class][$id][$id2] = new $class($id,$id2);
  25. }
  26. return self::$ _objs[$class][$id][$id2];
  27. }
  28. public functionload($fields=array())
  29. {
  30. if($fields)
  31. {
  32. foreach($fields as $key=> $value)
  33. {
  34. $this->_fields[$key] = $value;
  35. }
  36. }
  37. }
  38. public function wash()
  39. {
  40. $this->_fields = array();
  41. }
  42. //完全なデータをロードします
  43. 抽象保護関数loadById();
  44. public function __get($field)
  45. {
  46. if(!isset($this->_fields[$field]) && !$this-> _loadedById )
  47. {
  48. //遅延読み込み
  49. $this->loadById();
  50. $this->_loadedById = true;
  51. }
  52. $value = isset($this->_fields[$field]) ?$ this->_fields[$field]:null;
  53. return $value;
  54. }
  55. }
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。