簡體   English   中英

什么是模型,什么不是模型php

[英]What is a model and what is not a model php

我對如何建立模型感到很困惑,在過去的9個月里我一直不明白這一點。 盡管我正在閱讀和觀看所有參考資料,但@teresko給了我。

為了進一步縮小我的問題,我將舉一個例子說明我以前是如何做到的。

假設我有一個student實體,其中有student_numberfirst_name, last_name`

然后,我將創建我的所謂model (我的教授也做了同樣的事情,但是我知道這是完全錯誤的)。 我不知道我的教授是否知道Value Objects,但我知道。

private $student_number;
private $first_name;
private $last_name;

public function setStudentNumber($sn) {$this->student_number = $sn}
public function getStudentNumber() {return $this->student_number}
... and so on for other properties

如果我是正確的,則此setter和getters被歸類為Value Object模式,可以這樣使用:

$s = new Student();
$s->setStudentNumber(143);
$s->setFirstName('FooName');
$s->setLastName('BarName');

並將其傳遞到數據訪問對象(StudentDAO)中,如下所示:

$sDao = new StudentDAO($s);
$sDao->add();

DAO在哪里擴展了數據庫類,所以我可以做CRUD。

問題是,嗯,我很確定我會因為錯過太多原則而受到很多指責,但是那是什么? 如何創建模型? 謝謝! 好吧,我知道有很多答案可以告訴我關於DataMappers,工廠和其他東西的信息,而我對此不太了解。

型號

  • Dao :連接到您的數據源(即文件,數據庫/ SQL,Web服務等)。
  • 映射器 :將來自Dao的外部數據映射到內部Entities / Domain對象(獲取器/設置器),並將內部數據映射到外部。
  • 服務 :業務邏輯。

控制器

  • 動作調用服務層(不是Mapper或Dao)

依賴關系:服務->映射器-> Dao,即Dao被注入Mapper,Mapper被注入Service

這樣,您可以將數據源從數據庫更改為Webservie,並且業務邏輯將保持不變。

注意:我建議Dao和Mapper都有接口

正如您所強調的那樣,您對很多原理都不了解,所以我建議您看一下http://symfony.com/並嘗試對模型層使用該理論(因為很難將其與獨立項目一起使用)。 (或其他一些類似的MVC框架)一旦知道如何使用它們,便會開始了解這些原理。 Symfony易於設置以運行基本的Web應用程序,並且具有良好的文檔說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM