2017-08-04 71 views
0

在一個待辦事項應用教程上工作,我不太明白(Request $request)的意思是什麼以及其他(Task $task)等。以下控制器操作括號內的參數是什麼?

我已經完成了一些研究,並且獲得了關於依賴注入以及Perl語法的解答。

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Auth; 
use App\Task; 

class TasksController extends Controller 
{ 
    public function index() 
    { 
     $user = Auth::user(); 
     return view('welcome',compact('user')); 
    } 

    public function add() 
    { 
     return view('add'); 
    } 

    public function create(Request $request) 
    { 
     $task = new Task(); 
     $task->description = $request->description; 
     $task->user_id = Auth::id(); 
     $task->save(); 
     return redirect('/'); 
    } 

    public function edit(Task $task) 
    { 

     if (Auth::check() && Auth::user()->id == $task->user_id) 
     {    
       return view('edit', compact('task')); 
     }   
     else { 
      return redirect('/'); 
     }    
    } 

    public function update(Request $request, Task $task) 
    { 
     if(isset($_POST['delete'])) { 
      $task->delete(); 
      return redirect('/'); 
     } 
     else 
     { 
      $task->description = $request->description; 
      $task->save(); 
      return redirect('/'); 
     }  
    } 
} 
+0

請求和任務是參數的類類型。含義傳遞給方法的參數在被調用時必須是方法聲明中定義的同一類的實例,否則PHP會通過致命錯誤。你清楚這件事嗎? –

+0

@NMoeini當你說班級類型時,你的意思是班級的名字嗎? – Robert

回答

2

首先,您需要了解什麼是類以及類如何創建對象。其次,在面向對象編程中,我們把所有東西當作一個對象。一個任務是Task類的一個對象。所以要編輯一個任務,我們需要傳遞一個任務對象。

另一方面,請求是http的助手類,它允許您獲取從先前的http請求中執行的所有數據。例如,如果您提交表單,所有表單數據以及一些額外的數據將被傳遞給Laravel框架,我們可以通過Request類訪問這些數據。你是對的這些都是關於依賴注入的。另外,在面向對象的編程世界中,依賴注入和對象的概念是相同的。當你探索其他面向對象的程序時,你會發現你的答案。任務是我們的課程,我們要編輯一個任務,因此任務必須是實體和數據的OOP世界中類「任務」的對象。

要清楚,只需記住我們過去使用的程序化非面向對象編程。很簡單,我們用來做這樣的事情

public function edit($task_id){ 
    //edit record (task) based on task id in mysql DB 
} 

但在OOP(面向對象編程),我們有一流的發揮,因爲我們有ORM(對象關係映射)的對象不是陣列和領域。

在非常基本的意識: 如果你想寫一個方法,以C編程添加兩個int,你不喜歡

sum(int a, int b){ 
    return a+b; 
} 
這個方法,則需要傳遞兩個參數的方法

。但在上面的edit方法中,您需要傳遞任務對象,因爲您正在處理數據類型任務(簡單字)。

+0

謝謝!來自Rails,並不確定這些論據意味着什麼! – Robert

+0

哦,這很酷,參數是我們傳遞給我們方法的參數,但現在現代框架使我們的工作變得簡單,並且一切都以對象爲導向。 – webDev

0

這就是所謂的PHP類型聲明也被稱爲類型暗示在PHP 5.根據PHP Manual

類型聲明允許功能,以要求參數是 某種類型在呼叫時間的。如果給定的值是不正確的 類型,則會生成一個錯誤:在PHP 5中,這將是一個可恢復的 致命錯誤,而PHP 7將引發Type Error異常。

相關問題