200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > PHP抽象函数的依赖注入 laravel 抽象类实现接口 具体类继承抽象类 使用依赖注入

PHP抽象函数的依赖注入 laravel 抽象类实现接口 具体类继承抽象类 使用依赖注入

时间:2019-10-16 19:35:31

相关推荐

PHP抽象函数的依赖注入 laravel  抽象类实现接口 具体类继承抽象类 使用依赖注入

接口类

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('*'));

}

抽象类

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;

}

}

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。