> For the complete documentation index, see [llms.txt](https://tobyisme.gitbook.io/laravel/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tobyisme.gitbook.io/laravel/annotation.md).

# Annotation

### *第一次獨立做業寫出的髒code經過一番的糾正，好看多了，清楚明瞭*

## MVC是什麼？

M : Model ，C : Controller，V : View，雖然說大家都說V會透過C去跟M要東西然後再回吐，但是嚴格說起來，C是去跟R要東西，R在去跟M拿然後給C，R就是Repository，M單純就只是串連資料庫而已，所有跟M有關的功能都會些在其所屬的R裡面，在更細分的話，還會把有關商業邏輯的東西抓出來放到Service裡，R負責資料的CRUD，S負責商業邏輯的處理。

PS：CRUD   建立（**C**reate）、讀取（**R**ead）、更新（**U**pdate）、刪除（**D**elete）

## 註解的重要！

假如你的方案只有一個，你還可以知道你每個function是在幹嘛的是做什麼用的是連結到哪的，而且前題是這方案是你獨立做業的，如果之後案子越來越多，再加上之後還要回頭維護，不然就是大案子要分工合作的時候，到時候你光要了解你寫的東西就要花上大量的時間了，所以習慣寫注解，每個function前面，註明會丟入什麼樣類型的值？這個function是做什麼用的？會傳出什麼樣類型的值？這樣就可以清楚明瞭的上手囉。

```php
<?
/**
 * Handle an incoming request.                // 這function的作用
 *
 * @param  \Illuminate\Http\Request  $request // 傳入的值
 * @param  \Closure  $next                    // 傳入的值
 * @param  string|null  $guard                // 傳入的值
 * @return mixed                              // 回傳的值
 */
public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }
    return $next($request);
}
```
