大佬教程收集整理的这篇文章主要介绍了php-Laravel扩展供应商类,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试扩展Illuminate Class Translator
我创建了一个类并扩展到翻译器
然后我将此行添加到我的RepositoryserviceProvider
$this->app->bind(\Illuminate\Translation\Translator::class, \App\Repositories\Translation\TranslationTranslator::class);
但是它不起作用
我究竟做错了什么?
该类如下
<?PHP
namespace App\Repositories\Translation;
use Countable;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Illuminate\Support\Collection;
use Illuminate\Support\Traits\Macroable;
use Illuminate\Support\NamespacedItemResolver;
use Symfony\Component\Translation\messageSELEctor;
use Symfony\Component\Translation\TranslatorInterface;
class TranslationTranslator extends \Illuminate\Translation\Translator
{
/**
* Parse a key into namespace, group, and item.
*
* @param String $key
* @return array
*/
public function parseKey($key)
{
\Log::info('got in');
die;
$segments = parent::parseKey($key);
if (is_null($segments[0])) {
$segments[0] = @explode('.', $segments[2])[0];
}
if ($segments[1] == 'translatable') {
$segments[1] = @explode('.', $segments[2])[0] . '_' . @explode('.', $segments[2])[1];
}
return $segments;
}
}
更新
显然,Translator类具有构造函数
public function __construct(LoaderInterface $loader, $localE)
{
$this->loader = $loader;
$this->locale = $locale;
}
所以我的绑定必须通过接口..无法实例化
public function boot()
{
$app = $this->app;
$this->app->bind(\Illuminate\Translation\Translator::class, function() use ($app){
return $app->make(\App\Repositories\Translation\TranslationTranslator::class);
});
}
并得到这个错误
解决方法:
您可以使用闭包来解析类
$this->app->bind(\Illuminate\Translation\Translator::class, function(){
return new \App\Repositories\Translation\TranslationTranslator;
});
其次,使用翻译器别名将翻译器与laravel绑定.
您也可以覆盖它.
$this->app->bind('translator', function(){
return new \App\Repositories\Translation\TranslationTranslator;
})
以上是大佬教程为你收集整理的php-Laravel扩展供应商类全部内容,希望文章能够帮你解决php-Laravel扩展供应商类所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。