Php laravel中的依赖项注入问题
我刚刚了解了laravel的服务容器和依赖项注入,为了尝试这一点,我创建了一个MailgunServiceProvider来实例化mailgun客户端,我还拥有一个名为SendMail的特性,它充当mailgun的包装器: 但是$mailgun变量返回null,我得到以下消息:Php laravel中的依赖项注入问题,php,laravel,mailgun,Php,Laravel,Mailgun,我刚刚了解了laravel的服务容器和依赖项注入,为了尝试这一点,我创建了一个MailgunServiceProvider来实例化mailgun客户端,我还拥有一个名为SendMail的特性,它充当mailgun的包装器: 但是$mailgun变量返回null,我得到以下消息: message Call to a member function messages() on null exception Symfony\Component\Debug\Exception\FatalThrowa
message Call to a member function messages() on null
exception Symfony\Component\Debug\Exception\FatalThrowableError
file C:\xampp\htdocs\dogmedia.com\app\Traits\SendMail.php
line 24
MailgunServiceProvider
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Mailgun\HttpClientConfigurator;
use Mailgun\Mailgun;
class MailgunServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(Mailgun::class, function()
{
return Mailgun::create(config('mail.mailgun.secret'), 'https://api.eu.mailgun.net');
});
}
}
类定义中定义的方法将优先于trait方法。因此,如果您的类定义了构造函数,则不会应用trait的构造函数方法 基类的继承成员被Trait插入的成员覆盖。优先顺序是当前类的成员覆盖Trait方法,而Trait方法反过来覆盖继承的方法 将使用类中定义的构造函数,而不是trait中具有相同名称的方法 如果您愿意,可以让
sendMail
方法从容器中获取所需的Mailgun类实例,从而避免完全处理构造函数:
$mailgun = app(\Mailgun\Mailgun::class);
类定义中定义的方法将优先于trait方法。因此,如果您的类定义了构造函数,则不会应用trait的构造函数方法 基类的继承成员被Trait插入的成员覆盖。优先顺序是当前类的成员覆盖Trait方法,而Trait方法反过来覆盖继承的方法 将使用类中定义的构造函数,而不是trait中具有相同名称的方法 如果您愿意,可以让
sendMail
方法从容器中获取所需的Mailgun类实例,从而避免完全处理构造函数:
$mailgun = app(\Mailgun\Mailgun::class);
什么类在使用这个特性?调用这个特性的代码在哪里?@lagbox id做了,刚刚选中,它是空的,刚刚删除了它,现在它工作了,任何人都可以解释这个吗?也许我应该用一个静态方法或其他什么把trait转换成cals…在那个场景中,类的构造函数定义优先于trait。。。请包括正在使用该trait的类什么类正在使用该trait?调用该trait的代码在哪里?@lagbox id做了,刚刚选中,它是空的tho,刚刚删除了它,现在它工作了,任何人都可以解释吗?也许我应该用一个静态方法或其他什么把trait转换成cals…在那个场景中,类的构造函数定义优先于trait。。。请包括使用该特性的类
class RandomClass
{
use SendMail;
public function __construct()
{
}
}
$mailgun = app(\Mailgun\Mailgun::class);