0

我想$this从我的控制器传递给我的服务提供者,以便我可以将它与我的自定义类一起使用。这样,我可以参考我的控制器并输出成功。

控制器

function Foo(){

    //$this is defined
    MyFacade::Bar($input);

}

function success(){

     return var_dump('Succes!');

}

服务提供者

<?php namespace App\Libraries\Extensions\Filesystem;

use Illuminate\Support\ServiceProvider as  IlluminateServiceProvider;
use App\Libraries\Extensions\Filesystem\Filesystem;

class FilesystemServiceProvider extends IlluminateServiceProvider {

   public function register()
        { 
            $this->app->bind('files', function(){

               return new Filesystem($this);

            });    
    }
}

自定义类

<?php namespace App\Libraries\Extensions\Filesystem;

use \Illuminate\Filesystem\Filesystem as IlluminateFilesystem;

class Filesystem extends IlluminateFilesystem {

protected $listener;

    public function __construct($listener)
    {

        $this->listener = $listener;

    }

   function Bar($input){
     //Some code
     return $this->listener->Success();
   }

有了这段代码,我得到了Call to undefined method App\Libraries\Extensions\Filesystem\FilesystemServiceProvider::Success().

我相信 myService Provider $this是通过而不是 my Controller $this

如何将我的控制器传递$this给我的服务提供商,以便我可以打电话MyFacade::Bar($input)

4

1 回答 1

1

我想将 $this 从我的控制器传递给我的服务提供者,以便我可以将它与我的自定义类一起使用。这样,我可以参考我的控制器并输出成功。

这是一个糟糕的想法,无论如何你都很难让它发挥作用。

您的 Filesystem 类应该不知道您的控制器类。传入 $this 并试图让 File 完成控制器的工作并不是这样做的方法。它应该只做它的“文件”内容,然后返回适当的响应。

控制器

function Foo(){

    if (MyFacade::Bar($input))
    { 
        // Success
    }
    else
    {
        // Fail
    }

}

自定义类

function Bar($input){
     //Some code
     return true; // or false
   }
于 2014-05-14T17:53:53.200 回答