php 框架 容器,thinkphp:依赖注入,容器,Facade,路由基本原理——2018-10-26

1. 依赖注入案例:

Model模型代码:

实例

namespace Model;

class Model{

public function getData(){

return [

['name'=>'张志伟','sex'=>'男','age'=>22,'marriage'=>'未婚','wages'=>8000,'occupation'=>'外卖骑手'],

];

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

View视图代码:

实例

namespace View;

class View{

public function fetch($data){

foreach ($data as $val){

return '姓名:'.$val['name'].',性别:'.$val['sex'].',年龄:'.$val['age'].',婚姻状态:'.$val['marriage'].',职业:'.$val['occupation'].',月薪:'.$val['wages'];

}

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

Controller控制器代码:

实例

namespace Controller;

require 'Model.php';

use Model\Model;

require 'View.php';

use View\View;

$model = new Model();

$view = new View();

class Controller{

public function Index(Model $model,View $view){

$data = $model->getData();

return $view->fetch($data);

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

入口文件:demo1.php:

实例

require 'Controller.php';

use Controller\Controller;

$controller = new Controller();

echo $controller->Index($model,$view);

运行实例 »

点击 "运行实例" 按钮查看在线实例

效果浏览图:

48e4c6942f45695ffceb3819ca15d4be.png

2、容器案例:

container 容器代码:

实例

namespace Container;

require 'Model.php';

use Model\Model;

require 'View.php';

use View\View;

class container

{

protected $rong = [];

public function bind($key,$val){

$this->rong[$key]=$val;

}

public function make($key,$valss=[])

{

return call_user_func_array($this->rong[$key],[]);

}

}

$container = new container();

$container->bind('model',function (){ return new Model();});

$container->bind('view',function (){ return new View();});

运行实例 »

点击 "运行实例" 按钮查看在线实例

Controller1 控制器代码:

实例

namespace Controller1;

require 'Container.php';

use Container\container;

class Controller1{

public function Index($container){

$data = $container->make('model')->getData();

return $container->make('view')->fetch($data);

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo2.php 入口文件:

实例

require "Controller1.php";

use Controller1\Controller1;

$controller1  = new Controller1();

echo $controller1->Index($container);

运行实例 »

点击 "运行实例" 按钮查看在线实例

3、Facade 案例:

Facade.php类:

实例

namespace Facade;

require 'Container.php';

use Container\container;

class Facade

{

protected static $conrainer = null;

protected static $data = [];

public static function ini($conrainer){

static::$conrainer = $conrainer;

}

public static function getData(){

static::$data = static::$conrainer->make('model')->getData();

}

public static function fecth(){

return static::$conrainer->make('view')->fetch(static::$data);

}

}

// 继承Facade

class Student extends Facade{

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

Controller2.php 控制器:

实例

namespace Controller2;

require 'Facade.php';

use Facade\Student;

class Controller2{

public function __construct($conrainer)

{

Student::ini($conrainer);

}

public function Index(){

Student::getData();

return Student::fecth();

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

demo3.php 入口文件:

实例

require "Controller2.php";

use Controller2\Controller2;

$controller = new Controller2($container);

echo $controller->Index();

运行实例 »

点击 "运行实例" 按钮查看在线实例

4、路由实现的基本原理:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值