博客列表 >PHP教学-静态方法,MVC,_12.4

PHP教学-静态方法,MVC,_12.4

果莫个人博客
果莫个人博客原创
2023年01月16日 22:54:39632浏览

1

<?phpnamespace _1204;use PDO;//static静态成员//添加类class Db1{    //添加类成员    //静态属性    protected static $pdo;    protected static $dsn ='mysql:host=localhost;dbname=zhulaoshi';    protected static $username='zhuge';    protected static $password='123456';//    静态方法    public static function connect()    {        //在类中访问当前类的静态成员        static::$pdo = new PDO(static::$dsn,static::$username,static::$password);    }    public static function select()    {     static::connect();    return static::$pdo->query('select * from `zuser`',PDO::FETCH_ASSOC);    }}$result = Db1::select();foreach ($result as $row){    echo '<pre>'.print_r($row).'</pre>';}

2

<?phpnamespace _1204;use PDO;//static静态成员//添加类class Db2{    //添加类成员    //静态属性    protected static $pdo;    protected static $dsn ='mysql:host=localhost;dbname=zhulaoshi';    protected static $username='zhuge111111111111111';    protected static $password='1234561111111111111';//    静态方法    public static function connect()    {        //在类中访问当前类的静态成员        static::$pdo = new PDO(static::$dsn,static::$username,static::$password);    }    public static function select()    {     static::connect();    return static::$pdo->query('select * from `zuser`',PDO::FETCH_ASSOC);    }}class Sub extends Db2{    protected static $username='zhuge';    protected static $password='123456';    public static function connect()    {        parent::connect(); // TODO: Change the autogenerated stub    }}$result = Sub::select();foreach ($result as $row){    echo '<pre>'.print_r($row).'</pre>';}

MVC

demo1

<?phpnamespace mvc;//1.加载模型(相当于添加类成员)require 'Model.php';//2.加载视图(相当于添加类成员)require 'View.php';//3.创建控制器(相当于访问类成员)class Controller1{    public function index()    {        $model=new Model();        $data=$model->getdata();        $view=new View();        return $view->fetch($data);    }}//4.访问类成员(相当于访问类成员)$controller=new Controller1();echo $controller->index();

demo2

<?phpnamespace mvc;//降低耦合度//1.加载模型(相当于添加类成员)require 'Model.php';//2.加载视图(相当于添加类成员)require 'View.php';//3.创建控制器(相当于访问类成员)class Controller2{    public function index($model,$view)    {        $data = $model->getdata();        return $view->fetch($data);    }}//4.访问类成员(相当于访问类成员)$model = new Model();$view = new View();//将模型对象与师徒对象,以参数的方式注入到控制器的方法中$controller = new Controller2();echo $controller->index($model,$view);

demo3

<?phpnamespace mvc;//降低耦合度//将注入点改到构造方法中//1.加载模型(相当于添加类成员)require 'Model.php';//2.加载视图(相当于添加类成员)require 'View.php';//3.创建控制器(相当于访问类成员)class Controller3{    protected $model;    protected $view;    public function __construct(Model $model,View $view)    {        $this->model=$model;        $this->view =$view;    }    public function index()    {        $data = $this->model->getdata();        return $this->view->fetch($data);    }}//4.访问类成员(相当于访问类成员)$model = new Model();$view = new View();//将模型对象与师徒对象,以参数的方式注入到控制器的方法中$controller = new Controller3($model,$view);echo $controller->index();

demo4

<?phpnamespace mvc;//降低耦合度//将注入点改到构造方法中//1.加载模型(相当于添加类成员)require 'Model.php';//2.加载视图(相当于添加类成员)require 'View.php';/**********************************************************///添加服务容器层class Container{    //创建个容器属性,就是个数组    protected $instance=[];    //放进去    public function bind($alias,\Closure $process)    {        //将类实例化的方法绑定到服务器中        $this->instance[$alias]=$process;    }    //取出来(执行方法)    public function make($alias,$params=[])    {      return  call_user_func_array($this->instance[$alias],[]);    }}//实例化容器$container =new Container();//模型对象,视图对象,绑定到容器中$container->bind('model',function (){return new Model();});$container->bind('view',function (){return new View();});/**********************************************************///3.创建控制器(相当于访问类成员)class Controller4{    public function index(Container $container)    {        $data = $container->make('model')->getdata();        return $container->make('view')->fetch($data);    }}//4.访问类成员(相当于访问类成员)//将模型对象与师徒对象,以参数的方式注入到控制器的方法中$controller = new Controller4();echo $controller->index($container);

demo5

<?php//facade技术;同意了外部对象的调用方式,全部改为静态调用,不管之前的方法是什么类型//laravel,thinkphp全都在用namespace mvc;//1.加载模型(相当于添加类成员)require 'Model.php';//2.加载视图(相当于添加类成员)require 'View.php';/**********************************************************///添加服务容器层class Container1{    //创建个容器属性,就是个数组    protected $instance=[];    //放进去    public function bind($alias,\Closure $process)    {        //将类实例化的方法绑定到服务器中        $this->instance[$alias]=$process;    }    //取出来(执行方法)    public function make($alias,$params=[])    {      return  call_user_func_array($this->instance[$alias],[]);    }}//实例化容器$container =new Container1();//模型对象,视图对象,绑定到容器中$container->bind('model',function (){return new Model();});$container->bind('view',function (){return new View();});/**********************************************************///添加facade门面类class Facade{    protected static $container =null;    protected static $data =[];    //用服务容器给他初始化    public static function Chushihua(Container1 $container)    {        static::$container=$container;    }    //用静态代理方式将模型中的getdata()静态化    public static function getdata()    {        static::$data=static::$container->make('model')->getdata();    }    public static function fetch()    {        return static::$container->make('view')->fetch(static::$data);    }}/**********************************************************///3.创建控制器(相当于访问类成员)class Controller5{    public function __construct(Container1 $container)    {        //调用Facade里面的初始化方法        Facade::Chushihua($container);    }    public function index()    {        Facade::getdata();        return Facade::fetch();    }}//4.访问类成员(相当于访问类成员)//将模型对象与师徒对象,以参数的方式注入到控制器的方法中$controller = new Controller5($container);echo $controller->index();

总结:

总结了两个问题,请老师能给回答一下,谢谢,如图


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议