首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5-方法注射

Laravel 5-方法注射
EN

Stack Overflow用户
提问于 2015-01-13 19:41:09
回答 3查看 8.4K关注 0票数 7

在Laravel 5中,方法注入是如何工作的(我指的是实现),我可以在自定义方法中注入参数,而不仅仅是在控制器操作中吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-13 20:35:23

1)阅读这篇文章,了解更多关于laravel 5中注射方法的知识。

http://mattstauffer.co/blog/laravel-5.0-method-injection

https://laracasts.com/series/whats-new-in-laravel-5/episodes/2

2)这里是方法注入的简单实现

代码语言:javascript
复制
$parameters = [];
$reflector = new ReflectionFunction('myTestFunction');
foreach ($reflector->getParameters() as $key => $parameter) {
    $class = $parameter->getClass();
    if ($class) {
        $parameters[$key] = App::make($class->name);
    } else {
        $parameters[$key] = null;
    }
}
call_user_func_array('myTestFunction', $parameters);

您还可以查看函数

代码语言:javascript
复制
public function call($callback, array $parameters = [], $defaultMethod = null)

https://github.com/laravel/framework/blob/master/src/Illuminate/Container/Container.php文件中获得更多详细信息

3)您可以将方法注入用于自定义方法

代码语言:javascript
复制
App::call('\App\Http\Controllers\Api\myTestFunction');

或为方法

代码语言:javascript
复制
App::call([$object, 'myTestMethod']);
票数 13
EN

Stack Overflow用户

发布于 2015-08-01 09:27:37

下面是方法注入的简单示例,我们在laravel.eg中经常使用它

代码语言:javascript
复制
public function show(Request $request,$id){
$record = $request->find($id);
dd($record);
}

-Here我们注入请求类型的对象,并可以注入模型类对象等。

或一般例子:

代码语言:javascript
复制
class A{}
class B{
   function abc(A $obj){}
}

-so function abc of class B will accept object of Class A.
like:
$obj = new A();
$obj2 = new B();
$obj2->abc($obj);
票数 2
EN

Stack Overflow用户

发布于 2021-04-13 20:43:01

下面是php 7+中的另一个示例

代码语言:javascript
复制
class Foo {
   public function bar(Baz $baz)
   {
        $this->custom(...$baz);
   }

   protected function custom(Baz $baz, Baz2 $baz2, Baz3 $baz3)
   {
        return $baz3;
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27930189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档