使用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('/');
}
}
}
答案 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将抛出类型错误异常。