Laravel 框架的一个困惑

前云 2017-03-07 04:59:35


看文档这个叫依赖注入 get_req(Request $request,$id=1);
1.这个Request在什么时候实例化的。
2.Request在哪里传进去的。
...全文
1906 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pharaoh_shi 2017-09-13
  • 打赏
  • 举报
回复

  
public function dispatch(Route $route, $controller, $method)
{
$parameters = $this->resolveClassMethodDependencies(
$route->parametersWithoutNulls(), $controller, $method
);
if (method_exists($controller, 'callAction')) {
return $controller->callAction($method, $parameters);
}
return $controller->{$method}(...array_values($parameters));
}

可以看到是通过 $this->resolveClassMethodDependencies() 方法获取参数依赖的。
你可以看一下 Laravel 的容器是怎么通过反射解决参数依赖问题的,然后再看路由传参
xiwanghope 2017-09-04
  • 打赏
  • 举报
回复
说白了就是一个规则,他看到你第一个参数是Request类型的,符合他的注入规则,所以他会自动把request实例传递给方法。如果你不表明第一个参数是Reqeust类型,你看看他还能注入不,肯定要报错的。
李士令 2017-05-24
  • 打赏
  • 举报
回复
这是类的多态性,就类似于定义方法的参数为int、array一样,这里是具体的某个类对象
xuzuning 2017-05-20
  • 打赏
  • 举报
回复
这是 php 的基本特征,与什么 Laravel、什么依赖注入没有关系 function get_req(Request $request,$id=1) 是让 php 帮你检查:参数 $request 是否是类 Request 的实例 #1 的例子不能说明这一点,改一下
class mm {
    public $str = 1;
}

class nn {
}

function abc(mm $abc){ // 限制参数必须是mm类的对象
    echo $abc->str;
}

$obj = new nn;
abc($obj);
Catchable fatal error: Argument 1 passed to abc() must be an instance of mm, instance of nn given, called
mmcawu 2017-05-20
  • 打赏
  • 举报
回复
依赖注入,指的是,每次自动化实例一个类的对象时,会判断类的构造函数,是否有参数;如果有参数,则判断参数是可实例化(由此判断参数的类型是否为类),如果是类,则继续自动化实例一个类的实例,以此类推下去。 这里,调用类中的一个方法,是laravel框架中,容器实现的一个特性,自动为方法实例化Request类的实例。
komyluo 2017-03-08
  • 打赏
  • 举报
回复
依赖注入,是框架会自动做的
qq_25705515 2017-03-08
  • 打赏
  • 举报
回复
看完还是不懂,慢慢来
傲雪星枫 2017-03-07
  • 打赏
  • 举报
回复
这个Request只是定义传入的参数必须是Request的对象,并不是要实例化Request 例如:


class mm{
    public $str = 1;
}

function abc(mm $abc){ // 限制参数必须是mm类的对象
    echo $abc->str;
}

$obj = new mm;
abc($obj);
内容概要:本文以《从0到1:Laravel小白成长记》为主题,详细介绍了Laravel框架的学习路径。文章首先讲述了作者初次接触Laravel时的困惑与好奇,引出Laravel的独特设计理念和重要地位。接着,文章深入探讨了Laravel的核心概念,包括路由、控制器、模型和视图,并通过创建一个简单的博客系统实战项目,展示了如何从创建数据库表、定义模型、编写控制器到编写视图的完整开发流程。此外,文章还推荐了一系列优质的学习资源,如官方文档、在线教程和专业书籍,帮助读者系统地学习Laravel。最后,文章总结了学习Laravel的意义和未来的发展方向,鼓励读者保持学习热情,不断实践。 适合人群:具备一定PHP基础,尤其是对Web开发感兴趣的开发者,无论是新手还是有一定经验的研发人员。 使用场景及目标:①理解Laravel框架的核心概念和工作原理;②掌握Laravel的安装和环境搭建;③通过实战项目掌握Laravel的开发流程;④利用推荐的学习资源,系统地提升Laravel开发技能。 阅读建议:本文不仅提供了理论知识,还结合了实际项目开发,建议读者在学习过程中边看边做,尤其要多动手实践。通过创建和调试项目代码,加深对Laravel的理解和掌握。同时,充分利用推荐的学习资源,如官方文档和在线教程,以获得更全面的知识体系。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧