我对这个服务容器一无所知。
只需寻找一种简单的方法来覆盖Captcha
类的getView()方法。
我的想法是创建一个扩展captcha
类的新类:
<?php
namespace App\Http\Helpers\Captcha;
use Igoshev\Captcha\Captcha\Storage\StorageInterface;
use Igoshev\Captcha\Captcha\Generator\GeneratorInterface;
use Igoshev\Captcha\Captcha\Code\CodeInterface;
class CaptchaNew extends Igoshev\Captcha\Captcha
{
/**
* Get html image tag.
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getView()
{
//new code...
}
}
在AppServiceProvider
方法下的register
内,使用:
$loader = AliasLoader::getInstance();
$loader->alias('App\Http\Helpers\Captcha\CaptchaNew', 'Igoshev\Captcha\Captcha');
我也已经尝试过boot
方法,但是也没有用。重写类的最佳方法是什么?也提供了一个“ serviceProvider”,但我想使事情保持简单,并且我一般不了解serviceProviders。
答案 0 :(得分:0)
您可以在下面尝试这种方式来注册您的服务,而应使用绑定功能。
在AppServiceProvider中的register
函数下,用下面的示例代码替换您的函数。但是请注意,绑定函数的第一个参数必须与供应商库的外观访问器相同(在本例中为\ Igoshev \ Captcha \ Captcha \ Captcha :: class,您可以看看here)。在软件包的服务提供者之后,在config / app.php中注册此外观:
$this->app->bind(\Igoshev\Captcha\Captcha\Captcha::class, function(){
return new CaptchaNew($this->app['config']);
})