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

搜索
博主信息
博文 145
粉絲 7
評(píng)論 7
訪問量 198757
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
02月17日作業(yè):服務(wù)容器和路由原理
李東亞1??3????12?
原創(chuàng)
910人瀏覽過

作業(yè)一:

MVC框架:Model > View > Container(對(duì)象容器) > Facade(門面) > Controller
1、Model代碼:

  1. <?php
  2. namespace one;
  3. use mysqli;
  4. class Model
  5. {
  6. public function getdatas()
  7. {
  8. $mysql=new mysqli('NewYear.com','phptest','123456','php');
  9. $stmt=$mysql->stmt_init();
  10. $stmt->prepare('SELECT * FROM `staffs`');
  11. // var_dump($stmt);
  12. $stmt->execute();
  13. $reuslt=$stmt->get_result();
  14. $datas=$reuslt->fetch_all(MYSQLI_ASSOC);
  15. return $datas;
  16. }
  17. }

2、View代碼:

  1. <?php
  2. namespace one;
  3. // 視圖類
  4. class View
  5. {
  6. public function fetch($data)
  7. {
  8. $table = '<table>';
  9. $table .= '<caption>員工信息表</caption>';
  10. $table .= '<tr><th>ID</th><th>姓名</th><th>性別</th><th>職務(wù)</th><th>手機(jī)號(hào)</th><th>入職時(shí)間</th></tr>';
  11. // 將數(shù)據(jù)循環(huán)遍歷出來
  12. foreach ($data as $staff) {
  13. $table .= '<tr>';
  14. $table .= '<td>' . $staff['id'] . '</td>';
  15. $table .= '<td>' . $staff['name'] . '</td>';
  16. $table .= '<td>' . ($staff['sex'] ? '男' : '女') . '</td>';
  17. $table .= '<td>' . $staff['position'] . '</td>';
  18. $table .= '<td>' . $staff['mobile'] . '</td>';
  19. $table .= '<td>' . date('Y年m月d日', $staff['hiredate']) . '</td>';
  20. $table .= '</tr>';
  21. }
  22. $table .= '</table>';
  23. return $table;
  24. }
  25. }
  26. echo '<style>
  27. table {border-collapse: collapse; border: 2px solid;text-align: center;height: 150px;width: 600px;background-color:yellow; }
  28. caption {font-size: 1.2rem; margin-bottom: 10px;}
  29. tr:first-of-type { background-color:red;}
  30. td,th {border: 1px solid; padding:5px}
  31. </style>';
  32. // require 'Model.php';
  33. // $mysql=new Model;
  34. // $datas=$mysql->getdate();
  35. // echo (new View())->fetch($datas);

3、Control代碼:

  1. <?php
  2. namespace one;
  3. // 加載數(shù)據(jù)和視圖
  4. require 'Model.php';
  5. require 'View.php';
  6. class Objects
  7. {
  8. protected $obj=[];
  9. public function bind($classname,\Closure $class)
  10. {
  11. $this->obj[$classname]=$class;
  12. }
  13. public function make($classname,$params=[])
  14. {
  15. return call_user_func_array($this->obj[$classname],[]);
  16. }
  17. }
  18. $obj=new Objects;
  19. $obj->bind('model',function(){return new Model();});
  20. $obj->bind('view',function(){return new View();});
  21. class Face
  22. {
  23. protected static $class=null;
  24. protected static $datas=[];
  25. public static function set(Objects $obj)
  26. {
  27. static::$class=$obj;
  28. }
  29. public static function get_datas()
  30. {
  31. static::$datas=static::$class->make('model')->getdatas();
  32. }
  33. public static function fetch()
  34. {
  35. return static::$class->make('view')->fetch(static::$datas);
  36. }
  37. }
  38. class Controler
  39. {
  40. public function __construct(Objects $class)
  41. {
  42. Face::set($class);
  43. }
  44. public function index()
  45. {
  46. Face::get_datas();
  47. return Face::fetch();
  48. }
  49. }
  50. $c=new Controler($obj);
  51. echo $c->index();

4、效果圖:

作業(yè)二

代碼:

  1. <?php
  2. namespace part10;
  3. // 將所有查詢參數(shù)全部使用pathinfo方式提供
  4. // 實(shí)例演示
  5. class ActionController1
  6. {
  7. public function method($id, $name,$age)
  8. {
  9. return "id => $id : name => $name : age => $age";
  10. }
  11. }
  12. // 1. 解析出pathinfo
  13. // echo $_SERVER['PATH_INFO'].'<br>';
  14. $url=ltrim($_SERVER['PATH_INFO'],'/');
  15. $pathinfo = explode('/',$url);
  16. $pathinfo = array_values($pathinfo);
  17. echo '<pre>' . print_r($pathinfo, true) . '</pre>';
  18. // 解析出控制器
  19. $controller = __NAMESPACE__ . '\\' . ucfirst($pathinfo[0]) . 'Controller1';
  20. // echo $controller;
  21. // 解析控制器方法
  22. $action = $pathinfo[1];
  23. // 解析參數(shù)
  24. // array_slice(): 從一個(gè)數(shù)組中返回指定索引開始的指定長度的元素
  25. $values = array_slice($pathinfo, 2);
  26. $params = [];
  27. for ($i=0; $i<count($values); $i+=2) {
  28. if (isset($values[$i+1])) $params[$values[$i]] = $values[$i+1];
  29. }
  30. echo '<pre>' . print_r($params, true) . '</pre>';
  31. // 實(shí)例化控制器
  32. $test = new $controller();
  33. // 以回調(diào)的方式來調(diào)用控制器的方法
  34. echo call_user_func_array([$test, 'method'], $params);

結(jié)果圖:

作業(yè)三:

1、知識(shí)點(diǎn):
(1)http請(qǐng)求:
$_SERVER[‘REQUEST_URI’]:域名下的文件地址
$_SERVER[‘SCRIPT_FILENAME’]:服務(wù)器上的據(jù)對(duì)路徑
$_SERVER[‘SCRIPT_NAME’]:域名下的絕對(duì)路徑
$_SERVER[‘PATH_INFO’]:跟在真實(shí)腳本名稱之后并且在查詢語句(query string)之前的路徑信息(并非所有的url都有這個(gè)值)
$_SERVER[‘QUERY_STRING’]:查詢的字符串
parse_str(‘id=10&name=ldy’,$params):將查詢的字符串轉(zhuǎn)換成數(shù)組;
http_build_query():將一個(gè)關(guān)聯(lián)數(shù)組解析成一個(gè)查詢字符串(自動(dòng)轉(zhuǎn)義);
explode(‘/‘,$url):將$url以 / 為界拆分成數(shù)組;
array_filter():過濾函數(shù)
array_values($array):將數(shù)組中的值取出重新組成一個(gè)數(shù)組;
ucfirst($str):將字符串的首字母大寫
call_user_func_array():利用回調(diào)函數(shù)處理數(shù)組
array_slice($array,2,3):從一個(gè)數(shù)組返回指定索引開始的指定長度的元素。

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

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

老師批語:作業(yè)總結(jié)的很好, 表格讓人耳目一新,眼前一亮
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

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

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