我在Laravel库中添加了一个自定义类,似乎非常接近成功。继承了我到目前为止所做的事情,接着是我得到的错误:
我的班级名为连接器,位于Acme / Api / Zurmo / Connector
这个类需要另一个类,所以这是代码:
use Acme\Api\Rest\ApiRestHelper;
class Connector implements ConnectorInterface {
protected $rest;
public function __construct(ApiRestHelper $rest)
{
$this->rest = $rest;
}
我的ApiRestHelper类就是这样开始的:
namespace Acme\Api\Rest;
class ApiRestHelper {
然后我在routes.php中添加了一个快速关闭来测试这个工作,(它没有):
Route::get('/', function()
{
$connector = new Acme\Api\Zurmo\Connector;
var_dump($connector);
});
这是我得到的错误:
传递给Acme \ Api \ Zurmo \ Connector :: __ construct()的参数1必须是 Acme \ Api \ Rest \ ApiRestHelper的一个实例,没有给出
我首先假设我已经搞砸了我的命名空间,但是Laravel可以找到这个类,因为我可以做到以下情况而不会出错:
$rest = new Acme\Api\Rest\ApiRestHelper;
var_dump($rest);
我在这里缺少什么想法?谢谢。
答案 0 :(得分:0)
构造函数希望您传入resthelper的实例:
//manual dependency injection
Route::get('/', function()
{
$connector = new Acme\Api\Zurmo\Connector(new Acme\Api\Rest\ApiRestHelper);
var_dump($connector);
});
或更改构造函数
//creates a hard dependency
use Acme\Api\Rest\ApiRestHelper;
class Connector implements ConnectorInterface {
protected $rest;
public function __construct()
{
$this->rest = new ApiRestHelper();
}
}
更高级的选项是使用IOC容器进行依赖注入,但这超出了本答案的范围