我在使用PHP中的抽象类和接口方面很新颖。PHP/Laravel - 无法启动抽象类的扩展
我试图启动一个抽象类的扩展,但它不会工作。这可能是我遇到的Laravel特定问题。
这种情况:
- 我有一个接口
- 我有一个实现接口的抽象类
- 我有一个扩展抽象类
- 我尝试“常规”类实现类
这是接口:
<?php namespace Collection\Services\Validation;
interface SomeInterface {
public function with(array $input);
public function passes();
public function errors();
}
这是抽象类:
<?php namespace Collection\Services\Validation;
use Illuminate\Validation\Factory;
abstract class SomeClass implements SomeInterface {
protected $validator;
protected $data = array();
protected $errors = array();
protected $rules = array();
public function __construct(Factory $validator)
{
$this->validator = $validator;
}
public function with(array $data)
{
$this->data = $data;
return $this;
}
public function passes()
{
$validator = $this->validator->make($this->data, $this->rules);
if($validator->fails())
{
$this->errors = $validator->messages();
return false;
}
return true;
}
public function errors()
{
return $this->errors;
}
}
这是 “常规” 类:
<?php namespace Collection\Services\Validation;
class SomeClassExtender extends SomeClass {
public function sayBye()
{
return 'bye';
}
}
这是实现:
<?php
use Collection\Services\Validation\PageFormValidator;
use Collection\Services\Validation\SomeClassExtender;
class PagesController extends BaseController {
protected $someClass;
public function __construct(SomeClassExtender $class)
{
$this->someClass = $class;
}
然后我得到这个错误:
Illuminate \ Container \ BindingResolutionException
Target [Symfony\Component\Translation\TranslatorInterface] is not instantiable.
如果我删除了Factory类的初始化,那么错误消失了。工厂班也只是一个普通班。
我在这里做错了什么?
错误是不相关的代码,你已经证明 – hek2mgl
凡涉及到的错误?到“工厂”班? – Hak
'目标[Symfony \ Component \ Translation \ TranslatorInterface]是不可实例化的。' – hek2mgl