Blogger Information
Blog 25
fans 2
comment 0
visits 18561
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP教学-静态方法,MVC,_12.4
果莫个人博客
Original
634 people have browsed it

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

总结:

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


Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:第一个问题解答: 子类中可以用parent引用父类成员! 第二个问题解答: 对象, 数组前面使用类型声明符号, 是php5.6以后支持的新特征, 在php7中, 可声明的变量类型更是扩展到了整数,字符串, 你可以查阅官方手册进行了解
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post