PHP抽象函数的依赖注入,laravel 抽象类实现接口,具体类继承抽象类,使用依赖注入,如何知道接口选择的是哪个具体实现类啊?-汗血宝马...

接口类

<?php

namespace Interfaces;

interface RepositoryInterface

{

public function all($columns = array('*'));

public function paginate($perPage = 15, $columns = array('*'));

public function create(array $data);

public function update(array $data, $id);

public function delete($id);

public function find($id, $columns = array('*'));

public function findBy($field, $value, $columns = array('*'));

}

抽象类

<?php

namespace Logic;

use Interfaces\RepositoryInterface;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Container\Container as App;

abstract class Repository implements RepositoryInterface{

private $app;

protected $model;

public function __construct(App $app){

$this->app = $app;

$this->makeModel();

}

abstract function model();

/**

* @param array $columns

* @return mixed

*/

public function all($columns = array('*')) {

return $this->model->get($columns);

}

/**

* @param int $perPage

* @param array $columns

* @return mixed

*/

public function paginate($perPage = 15, $columns = array('*')) {

return $this->model->paginate($perPage, $columns);

}

/**

* @param array $data

* @return mixed

*/

public function create(array $data) {

return $this->model->create($data);

}

/**

* @param array $data

* @param $id

* @param string $attribute

* @return mixed

*/

public function update(array $data, $id, $attribute="id") {

return $this->model->where($attribute, '=', $id)->update($data);

}

/**

* @param $id

* @return mixed

*/

public function delete($id) {

return $this->model->destroy($id);

}

/**

* @param $id

* @param array $columns

* @return mixed

*/

public function find($id, $columns = array('*')) {

return $this->model->find($id, $columns);

}

/**

* @param $attribute

* @param $value

* @param array $columns

* @return mixed

*/

public function findBy($attribute, $value, $columns = array('*')) {

return $this->model->where($attribute, '=', $value)->first($columns);

}

public function makeModel(){

$model = $this->app->make($this->model());

if(!$model instanceof Model)

return false;

return $this->model = $model;

}

}

继承抽象类的class A

class A extends Repository{

}

继承抽象类的class B

class B extends Repository{

}

控制器使用

class controller{

private $app;

public function __construct(RepositoryInterface $repo){

$this->app = $repo;

}

}

请问控制器中使用的接口,如果绑定到它具体实现类?

73bccf0c0b4af35beddca4274520fb45.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值