Giter Club home page Giter Club logo

modern-web-21-demo's People

Contributors

victorbuild avatar

Watchers

 avatar

modern-web-21-demo's Issues

問答題

情境

假設我們是都是同一間公司的同事,假設今天收到了,修改系統需要在,新增文章要留下新建紀錄的Log在另外一張資料表。

於下方回覆是在哪一個檔案的哪一個方法修改修改這個功能即可。

原因

這也是範例Controller 使用 Laravel CRUD 預設方法名稱的原因,達到共識,共同維護時會比較方便,知道應該在哪裡修改程式碼,縮短探索程式碼時間。

於 ArticleService 新增商業邏輯的方法

目標:

依照商業邏輯區分多個方法,讓每個方法做一個商業的邏輯。

原因

Controller 通常就是控制流程,依照目的性將商業邏輯,分別拆分多個方法,新增在前一個小練習 ArticleService 檔案中,此檔案目的為專門處理 Article 資源商業邏輯所有方法。

必要完成任務

#1

備註

這裡沒有真的要撰寫商業邏輯,替商業邏輯方法命名,並使用註解的方法,簡易撰寫商業邏輯的詳細流程即可,如下範例,建立一個 sendEmail 方法於ArticleService 用於表示新建文章成功的通知信,還有很多可以做的事情,沒有標準答案主要就是每個方法做一件商業邏輯,新建於ArticleService 的練習。

public function sendEmail(User $user)
{
    // TODO 取得會員EMAIL
    // TODO 沒有EMAIL 處理辦法
    // TODO 有EMAIL 寄送EMAIL
    // 回傳 寄出、未寄出的布林值
}

`ArticleController` 使用依賴注入的方式 呼叫 `ArticleService` 的商業邏輯的方法

目標:

Controller 控制流程,其他詳細的商業邏輯於 Article Service 類別中撰寫,此小練習將在Controller 呼叫 service 的方法。

原因

依賴注入減少耦合,在建立實體時,一並帶入實體。

必要完成任務

#2

備註

  1. ArticleController 建立一個私有變數 $articleService
  2. 於建構子裡面設定 $articleService 變數
  3. 並在 controller 的方法中,呼叫ArticleService 中你想要呼叫的方法。

問答題2

情境

同上個 issue #7 新建要有新建紀錄,修改也要有修改紀錄(每次不同的修改內容),你會怎麼做? 歡迎提出怎麼製作的方法討論,沒有標準答案。

備註

因為它是額外操作紀錄,所以Victor 會建立 observers 來監聽Model事件,Article Model 的新增、修改或刪除紀錄,新建在另外一張資料表上保存LOG

詳情請見Laravel 文件。
https://laravel.com/docs/8.x/eloquent#observers

新增儲存商業邏輯的 ArticleService

目標:

新增一個 ArticleService.php 檔案,於 app\Services 資料夾內

原因

通常系統設計上,複雜度會比範例還要複雜許多,因此除了MVC 架構以外,通常會在拆分將 商業邏輯 存放於 Service 的類別中。

新增 `ArticleRespository` 於 `app/Repositories` 資料夾中。

目標:

新增 ArticleRespositoryapp/Repositories 資料夾中。

原因

#1 拆分 商業邏輯 一樣,通常系統設計上,複雜度會比範例還要複雜許多,建議將處理資料庫 查詢相關的邏輯,放在 ArticleRespository

必要完成任務

#3

ArticleRespository 新增方法

目標:

ArticleRespository 新增方法,將屬於Article 查詢資料庫的邏輯,或新增資料的邏輯,依不同目的性拆分。

原因

#1 拆分 商業邏輯 一樣,通常系統設計上,複雜度會比範例還要複雜許多,建議將處理資料庫 查詢相關的邏輯,放在 ArticleRespository 。

必要完成任務

#4

備註

例如:範例中 ArticleController 內的 Article::get() 程式碼,它的作用是將文章 articles 這個資料表的所有內容讀取出來,請將他拆分到 ArticleRespository

使用依賴注入的方式在 `ArticleService` 載入並呼叫`ArticleRespository`方法

目標:

ArticleService 使用依賴注入的方式 呼叫 ArticleRespository 的查詢資料庫邏輯的方法

原因

Controller 控制流程 Service 拆分的各個商業邏輯,資料庫相關的操作邏輯的詳細內容,由ArticleRespository 負責,Victor 習慣統一由 service 的檔案中呼叫ArticleRespository,眾多的商業邏輯中,關於操作資料庫的部分,呼叫ArticleRespository 來執行。

必要完成任務

#5

備註

  1. ArticleController 建立一個私有變數 $articleRespository
  2. 於建構子裡面設定 $articleRespository 變數
  3. 並在 ArticleService 的方法中,呼叫ArticleRespository 中你想要呼叫的方法。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.