亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 145
粉絲 7
評論 7
訪問量 198456
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP實戰(zhàn)案例:MVC案例演示(服務(wù)容器和門面技術(shù))
李東亞1??3????12?
原創(chuàng)
1103人瀏覽過

演示代碼:

1、model代碼

  1. <?php
  2. namespace MVC;
  3. // use PDO;
  4. class Model
  5. {
  6. protected $dsn;
  7. protected $username;
  8. protected $password;
  9. protected static $db=null;
  10. public function __construct($dsn,$username,$password)
  11. {
  12. $this->dsn=$dsn;
  13. $this->username=$username;
  14. $this->password=$password;
  15. self::$db=new \PDO($this->dsn,$this->username,$this->password);
  16. }
  17. public function select($limit,$num)
  18. {
  19. $sql="select * FROM `staffs` LIMIT {$limit} OFFSET {$num}";
  20. $res=self::$db->query($sql);
  21. return $res->fetchAll(\PDO::FETCH_ASSOC);
  22. }
  23. }

2、view代碼(略)
3、control代碼

  1. <?php
  2. namespace MVC;
  3. // 引入model和view
  4. require 'Model.php';
  5. require 'View.php';
  6. // 準(zhǔn)備數(shù)據(jù)庫連接參數(shù)
  7. $dsn='mysql:host=php.edu;dbname=php.edu;charset=utf8;port=3306';
  8. $username='phpedu';
  9. $password='123456';
  10. // 服務(wù)容器
  11. class Container
  12. {
  13. protected $class_container=[];
  14. public function bind($class,\Closure $obj)
  15. {
  16. $this->class_container[$class]=$obj;
  17. }
  18. public function make($class,$params=[]){
  19. return call_user_func_array($this->class_container[$class],$params);
  20. }
  21. }
  22. $container=new Container;
  23. $container->bind('model',function()use($dsn,$username,$password){return new Model($dsn,$username,$password);});
  24. $container->bind('view',function (){return new View();});
  25. // 控制類(外部model和view對象注入)
  26. /*
  27. class Control
  28. {
  29. protected $model;
  30. protected $view;
  31. public function __construct(Model $model,View $view)
  32. {
  33. $this->model=$model;
  34. $this->view=$view;
  35. }
  36. public function html($n,$m)
  37. {
  38. $data=$this->model->select($n,$m);
  39. return $this->view->index($data);
  40. }
  41. }
  42. $model=new Model($dsn,$username,$password);
  43. $view=new View();
  44. echo (new Control($model,$view))->html(5,10);
  45. */
  46. // 控制類,面向服務(wù)容器的形式
  47. class Control
  48. {
  49. public function html(Container $container,$n,$m)
  50. {
  51. $data=$container->make('model')->select($n,$m);
  52. return $container->make('view')->index($data);
  53. }
  54. }
  55. echo (new Control())->html($container,10,10);

4、control類門面技術(shù):

  1. //定義門面類
  2. class Facades
  3. {
  4. public static $class=null;
  5. public static $data=[];
  6. public static function class(Container $container)
  7. {
  8. static::$class=$container;
  9. }
  10. }
  11. //模型類靜態(tài)接口
  12. class Model1 extends Facades
  13. {
  14. public static function getdata($n,$m)
  15. {
  16. static::$data=static::$class->make('model')->select($n,$m);
  17. }
  18. }
  19. //視圖類靜態(tài)接口
  20. class View1 extends Facades
  21. {
  22. public static function index($data)
  23. {
  24. return static::$data=static::$class->make('view')->index($data);
  25. }
  26. }
  27. //控制類
  28. class Control
  29. { protected $container;
  30. public function __construct(Container $container){
  31. $this->container=$container;
  32. Facades::class($this->container);
  33. }
  34. public function html($n,$m)
  35. {
  36. Model1::getdata($n,$m);
  37. return View1::index(Facades::$data);
  38. }
  39. //自動銷毀服務(wù)容器
  40. public function __destruct()
  41. {
  42. $this->container=null;
  43. }
  44. }
  45. //客戶端代碼,匿名類使用完自動銷毀
  46. echo (new Control($container))->html(12,10);

5、演示結(jié)果:

總結(jié):

1、call_user_func_array():利用回調(diào)函數(shù)處理數(shù)組
2、MVC是一個經(jīng)典的:數(shù)據(jù),視圖,控制器分離的代碼組織方法;
3、服務(wù)容器類:把所有需要實列化的類統(tǒng)一交給一個類來管理;
4、facades(門面技術(shù))是把服務(wù)容器中的對象(靜態(tài)接口)實現(xiàn)靜態(tài)化訪問;

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語:容器, 門面, 都是對類成中的高度抽象和封裝, 目標(biāo)就是和用戶提供一個簡單方便的訪問接口
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)