下面的控制器操作的括号内有哪些参数?

时间:2017-08-04 05:55:44

标签: php laravel

使用todo应用教程,我不太明白(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('/'); 
        }       
    }
}

2 个答案:

答案 0 :(得分:2)

首先,您需要了解什么是类以及如何创建类的对象。其次,在面向对象的编程中,我们将所有内容视为对象。一个任务是Task类的对象。因此,要编辑任务,我们需要传递一个任务对象。

另一方面,Request是http的辅助类,它允许您获取从先前的http请求执行的所有数据。例如,如果您要提交表单,则所有表单数据以及一些额外数据都将传递给Laravel框架,我们可以通过Request类访问这些数据。对于依赖注入你是对的。

此外,在面向对象编程世界中,依赖注入和对象的概念是相同的。当您探索其他面向对象的程序时,您将找到答案。任务是我们的类,我们想编辑一个任务,所以任务必须是类的对象&#34;任务&#34;在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方法中,您需要传递任务对象,因为您正在处理数据类型任务(简单单词)。

答案 1 :(得分:0)

它在PHP中称为类型声明,在PHP 5中也称为类型提示。根据PHP Manual

  

类型声明允许函数要求参数为a   某种类型的通话时间。如果给定的值不正确   类型,然后生成错误:在PHP 5中,这将是可恢复的   致命错误,而PHP 7将抛出类型错误异常。