1 »ä¹æ¯MVC
MVC模å¼ï¼Model-View-Controllerï¼æ¯è½¯ä»¶å·¥ç¨ä¸çä¸ç§è½¯ä»¶æ¶ææ¨¡å¼ã
MVCæè½¯ä»¶ç³»ç»å为ä¸ä¸ªåºæ¬é¨åï¼æ¨¡åï¼Modelï¼ãè§å¾ï¼Viewï¼åæ§å¶å¨ï¼Controllerï¼ã
PHPä¸MVC模å¼ä¹ç§°Web MVCï¼ä»ä¸ä¸çºª70年代è¿åèæ¥ã
MVCçç®çæ¯å®ç°ä¸ç§å¨æçç¨åºè®¾è®¡ï¼ä¾¿äºåç»å¯¹ç¨åºçä¿®æ¹åæ©å±ç®åï¼å¹¶ä¸ä½¿ç¨åºæä¸é¨åçéå¤å©ç¨æä¸ºå¯è½ã
餿¤ä¹å¤ï¼æ¤æ¨¡å¼éè¿å¯¹å¤æåº¦çç®åï¼ä½¿ç¨åºç»ææ´å ç´è§ã
MVCåé¨åçèè½ï¼
模åModel â 管ç大é¨åçä¸å¡é»è¾åææçæ°æ®åºé»è¾ã模åæä¾äºè¿æ¥åæä½æ°æ®åºçæ½è±¡å±ãæ§å¶å¨Controller - è´è´£ååºç¨æ·è¯·æ±ãå夿°æ®ï¼ä»¥åå³å®å¦ä½å±ç¤ºæ°æ®ãè§å¾View â è´è´£æ¸²ææ°æ®ï¼éè¿HTMLæ¹å¼åç°ç»ç¨æ·ã
ä¸ä¸ªå ¸åçWeb MVCæµç¨ï¼
Controlleræªè·ç¨æ·ååºç请æ±ï¼Controllerè°ç¨Modelå®æç¶æç读åæä½ï¼Controllerææ°æ®ä¼ éç»Viewï¼View渲ææç»ç»æå¹¶åç®ç»ç¨æ·ã
2 为ä»ä¹è¦èªå·±å¼åMVCæ¡æ¶
ç½ç»ä¸æå¤§éä¼ç§çMVCæ¡æ¶å¯ä¾ä½¿ç¨ï¼æ¬æç¨å¹¶ä¸æ¯ä¸ºäºå¼åä¸ä¸ªå ¨é¢çãç»æçMVCæ¡æ¶è§£å³æ¹æ¡ã
æä»¬å°å®ç使¯ä¸ä¸ªå¾å¥½çä»å é¨å¦ä¹ PHPçæºä¼ã
卿¤è¿ç¨ä¸ï¼ä½ å°å¦ä¹ é¢å对象ç¼ç¨åMVC设计模å¼ï¼å¹¶å¦ä¹ å°å¼åä¸çä¸äºæ³¨æäºé¡¹ã
æ´éè¦çæ¯ï¼éè¿èªå¶MVCæ¡æ¶ï¼æ¯ä¸ªäººé½å¯ä»¥å®å ¨æ§å¶èªå·±çæ¡æ¶ï¼å°ä½ çæ³æ³èå ¥å°ä½ å¼åçæ¡æ¶ä¸ã
è½ç¶ä¸ä¸å®æ¯æå¥½çï¼ä½æ¯ä½ å¯ä»¥æç §èªå·±çæ¹å¼å¼ååç§åè½ã
3 å¼å§å¼åèªå·±çMVCæ¡æ¶
3.1 ç®å½åå¤
å¨å¼å§å¼ååï¼è®©æä»¬å æ¥æé¡¹ç®å»ºç«å¥½ã
å设æä»¬å»ºç«ç项ç®ä¸º projectï¼MVCçæ¡æ¶å½å为 fastphpï¼é£ä¹æ¥ä¸æ¥ï¼ç¬¬ä¸æ¥è¦æç®å½ç»æè®¾ç½®å¥½ã
project WEBé¨ç½²ç®å½ ââapplication åºç¨ç®å½ â ââcontrollers æ§å¶å¨ç®å½ â ââmodels 模åç®å½ â ââviews è§å¾ç®å½ ââconfig é ç½®æä»¶ç®å½ ââfastphp æ¡æ¶æ ¸å¿ç®å½ ââstatic éææä»¶ç®å½ ââindex.php å ¥å£æä»¶
ç¶åæNginxæè Apacheçç«ç¹æ ¹ç®å½é ç½®å°projectç®å½ã
3.2 代ç è§è
å¨ç®å½è®¾ç½®å¥½ä»¥åï¼æä»¬æ¥ä¸æ¥è§å®ä»£ç çè§èï¼
MySQLç表åéå°åæå°åå ä¸å线ï¼å¦ï¼itemï¼car_ordersãæ¨¡ååï¼Modelsï¼éç¨å¤§é©¼å³°å½åæ³ï¼å³é¦åæ¯å¤§åï¼å¹¶å¨åç§°åæ·»å Modelï¼å¦ï¼ItemModelï¼CarModelãæ§å¶å¨ï¼Controllersï¼éç¨å¤§é©¼å³°å½åæ³ï¼å³é¦åæ¯å¤§åï¼å¹¶å¨åç§°åæ·»å Controllerï¼å¦ï¼ItemControllerï¼CarControllerãæ¹æ³åï¼Actionï¼éç¨å°é©¼å³°å½åæ³ï¼å³é¦åæ¯å°åï¼å¦ï¼indexï¼indexPostãè§å¾ï¼Viewsï¼é¨ç½²ç»æä¸ºæ§å¶å¨å/è¡ä¸ºåï¼å¦ï¼item/view.phpï¼car/buy.phpã
ä¸è¿°è§åæ¯ä¸ºäºç¨åºè½æ´å¥½å°ç¸äºè°ç¨ã
æ¥ä¸æ¥å°±å¼å§çæ£çPHP MVCç¼ç¨äºã
3.3 éå®å
éå®åçç®çæä¸¤ä¸ªï¼è®¾ç½®æ ¹ç®å½ä¸ºprojectæå¨ä½ç½®ï¼ä»¥åå°ææè¯·æ±é½åéç» index.php æä»¶ã
妿æ¯Apacheæå¡å¨ï¼å¨ project ç®å½ä¸æ°å»ºä¸ä¸ª .htaccess æä»¶ï¼å 容为ï¼
<IfModule mod_rewrite.c> # æå¼Reriteåè½ RewriteEngine On # å¦æè¯·æ±çæ¯çå®åå¨çæä»¶æç®å½ï¼ç´æ¥è®¿é® RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # å¦æè®¿é®çæä»¶æç®å½ä¸æ¯çäºåå¨ï¼åå请æ±è³ index.php RewriteRule . index.php
妿æ¯Nginxæå¡å¨ï¼ä¿®æ¹é ç½®æä»¶ï¼å¨serveråä¸å å ¥å¦ä¸çéå®åï¼
location / { # éæ°åææéçæ¯åå¨ç请æ±å°index.php try_files $uri $uri/ /index.php$args; }
è¿æ ·åç主è¦åå æ¯ï¼
ï¼1ï¼éææä»¶è½ç´æ¥è®¿é®ã
妿æä»¶æè ç®å½çå®åå¨ï¼åç´æ¥è®¿é®åå¨çæä»¶/ç®å½ã
æ¯å¦ï¼éææä»¶static/css/main.cssçå®åå¨ï¼å°±å¯ä»¥ç´æ¥è®¿é®å®ã
ï¼2ï¼ç¨åºæåä¸çå ¥å£ã
è¿ç§æ 嵿¯è¯·æ±å°å䏿¯çå®åå¨çæä»¶æç®å½ï¼è¿æ ·è¯·æ±å°±ä¼ä¼ å° index.php ä¸ã
ä¾å¦ï¼è®¿é®å°åï¼localhost/item/view/1ï¼å¨æä»¶ç³»ç»ä¸å¹¶ä¸åå¨è¿æ ·çæä»¶æç®å½ã
é£ä¹ï¼ApacheæNginxæå¡å¨ä¼æè¯·æ±åç»index.phpï¼å¹¶ä¸æååä¹åçå符串èµå¼ç»REQUEST_URIåéã
è¿æ ·å¨PHPä¸ç¨$_SERVER['REQUEST_URI']å°±è½æ¿å°/item/view/1ï¼
ï¼3ï¼å¯ä»¥ç¨æ¥çæç¾åçURLï¼å©äºSEOã
3.4 å ¥å£æä»¶
æ¥ä¸æ¥ï¼å¨ project ç®å½ä¸æ°å»º index.php å ¥å£æä»¶ï¼æä»¶å 容为ï¼
run(); 注æï¼ä¸é¢çPHP代ç ä¸ï¼å¹¶æ²¡ææ·»å PHPç»æç¬¦å·?>ã
è¿ä¹åç主è¦åå æ¯ï¼
对äºåªæ PHP 代ç çæä»¶ï¼æå¥½æ²¡æç»ææ å¿?>ï¼
PHPèªèº«å¹¶ä¸éè¦ç»æç¬¦å·ï¼ä¸å ç»æç¬¦è®©ç¨åºæ´å å®å ¨ï¼å¾å¤§ç¨åº¦é²æ¢äºæ«å°¾è¢«æ³¨å ¥é¢å¤çå 容ã
3.5 é ç½®æä»¶
å¨å ¥å£æä»¶ä¸ï¼æä»¬å è½½äºconfig.phpæä»¶çå 容ï¼é£å®æä½ä½ç¨å¢ï¼
ä»åç§°ä¸é¾çåºï¼å®çä½ç¨æ¯ä¿åä¸äºå¸¸ç¨é ç½®ã
config.php æä»¶å 容å¦ä¸ï¼ä½ç¨æ¯å®ä¹æ°æ®åºè¿æ¥åæ°åæ°ï¼ä»¥åé ç½®é»è®¤æ§å¶å¨ååæä½åï¼
\_config = $config; } // è¿è¡ç¨åº public function run() { spl\_autoload\_register(array($this, 'loadClass')); $this->setReporting(); $this->removeMagicQuotes(); $this->unregisterGlobals(); $this->setDbConfig(); $this->route(); } // è·¯ç±å¤ç public function route() { $controllerName = $this->\_config\['defaultController'\]; $actionName = $this->\_config\['defaultAction'\]; $param = array(); $url = $\_SERVER\['REQUEST\_URI'\]; // æ¸ é¤?ä¹åçå 容 $position = strpos($url, '?'); $url = $position === false ? $url : substr($url, 0, $position); // å é¤ååçâ/â $url = trim($url, '/'); if ($url) { // 使ç¨â/âåå²å符串ï¼å¹¶ä¿å卿°ç»ä¸ $urlArray = explode('/', $url); // å é¤ç©ºçæ°ç»å ç´ $urlArray = array\_filter($urlArray); // è·åæ§å¶å¨å $controllerName = ucfirst($urlArray\[0\]); // è·åå¨ä½å array\_shift($urlArray); $actionName = $urlArray ? $urlArray\[0\] : $actionName; // è·åURLåæ° array\_shift($urlArray); $param = $urlArray ? $urlArray : array(); } // 夿æ§å¶å¨åæä½æ¯å¦åå¨ $controller = $controllerName . 'Controller'; if (!class\_exists($controller)) { exit($controller . 'æ§å¶å¨ä¸åå¨'); } if (!method\_exists($controller, $actionName)) { exit($actionName . 'æ¹æ³ä¸åå¨'); } // 妿æ§å¶å¨åæä½ååå¨ï¼åå®ä¾åæ§å¶å¨ï¼å 为æ§å¶å¨å¯¹è±¡éé¢ // è¿ä¼ç¨å°æ§å¶å¨ååæä½åï¼æä»¥å®ä¾åçæ¶åæä»ä»¬ä¿©çåç§°ä¹ // ä¼ è¿å»ãç»åControlleråºç±»ä¸èµ·ç $dispatch = new $controller($controllerName, $actionName); // $dispatchä¿åæ§å¶å¨å®ä¾ååçå¯¹è±¡ï¼æä»¬å°±å¯ä»¥è°ç¨å®çæ¹æ³ï¼ // ä¹å¯ä»¥åæ¹æ³ä¸ä¼ å ¥åæ°ï¼ä»¥ä¸çåäºï¼$dispatch->$actionName($param) call\_user\_func\_array(array($dispatch, $actionName), $param); } // æ£æµå¼åç¯å¢ public function setReporting() { if (APP\_DEBUG === true) { error\_reporting(E\_ALL); ini\_set('display\_errors','On'); } else { error\_reporting(E\_ALL); ini\_set('display\_errors','Off'); ini\_set('log\_errors', 'On'); } } // å 餿æå符 public function stripSlashesDeep($value) { $value = is\_array($value) ? array\_map(array($this, 'stripSlashesDeep'), $value) : stripslashes($value); return $value; } // æ£æµææå符并å é¤ public function removeMagicQuotes() { if (get\_magic\_quotes\_gpc()) { $\_GET = isset($\_GET) ? $this->stripSlashesDeep($\_GET ) : ''; $\_POST = isset($\_POST) ? $this->stripSlashesDeep($\_POST ) : ''; $\_COOKIE = isset($\_COOKIE) ? $this->stripSlashesDeep($\_COOKIE) : ''; $\_SESSION = isset($\_SESSION) ? $this->stripSlashesDeep($\_SESSION) : ''; } } // æ£æµèªå®ä¹å ¨å±åéå¹¶ç§»é¤ãå 为 register\_globals å·²ç»å¼ç¨ï¼å¦æ // å·²ç»å¼ç¨ç register\_globals æä»¤è¢«è®¾ç½®ä¸º onï¼é£ä¹å±é¨åéä¹å° // å¨èæ¬çå ¨å±ä½ç¨åä¸å¯ç¨ã ä¾å¦ï¼ $\_POST\['foo'\] ä¹å°ä»¥ $foo ç // å½¢å¼åå¨ï¼è¿æ ·åæ¯ä¸å¥½çå®ç°ï¼ä¼å½±å代ç ä¸çå ¶ä»åéã ç¸å ³ä¿¡æ¯ï¼ // åè: http://php.net/manual/zh/faq.using.php#faq.register-globals public function unregisterGlobals() { if (ini\_get('register\_globals')) { $array = array('\_SESSION', '\_POST', '\_GET', '\_COOKIE', '\_REQUEST', '\_SERVER', '\_ENV', '\_FILES'); foreach ($array as $value) { foreach ($GLOBALS\[$value\] as $key => $var) { if ($var === $GLOBALS\[$key\]) { unset($GLOBALS\[$key\]); } } } } } // é ç½®æ°æ®åºä¿¡æ¯ public function setDbConfig() { if ($this->\_config\['db'\]) { Model::$dbConfig = $this->\_config\['db'\]; } } // èªå¨å è½½æ§å¶å¨å模åç±» public static function loadClass($class) { $frameworks = \_\_DIR\_\_ . '/' . $class . '.php'; $controllers = APP\_PATH . 'application/controllers/' . $class . '.php'; $models = APP\_PATH . 'application/models/' . $class . '.php'; if (file\_exists($frameworks)) { // å è½½æ¡æ¶æ ¸å¿ç±» include $frameworks; } elseif (file\_exists($controllers)) { // å è½½åºç¨æ§å¶å¨ç±» include $controllers; } elseif (file\_exists($models)) { //å è½½åºç¨æ¨¡åç±» include $models; } else { // é误代ç } } } ä¸é¢éç¹è®²è§£ä¸»è¯·æ±æ¹æ³ route()ï¼å®ä¹ç§°è·¯ç±æ¹æ³ï¼ä½ç¨æ¯ï¼æªåURLï¼å¹¶è§£æåºæ§å¶å¨åãæ¹æ³ååURLåæ°ã å设æä»¬ç URL æ¯è¿æ ·ï¼ yoursite.com/controllerName/actionName/queryString 彿µè§å¨è®¿é®ä¸é¢çURLï¼route()ä»å ¨å±åé $\_SERVER\['REQUEST\_URI'\]ä¸è·åå°å符串/controllerName/actionName/queryStringã ç¶åï¼ä¼å°è¿ä¸ªå符串å岿ä¸é¨åï¼controllerãaction å queryStringã ä¾å¦ï¼URL龿¥ä¸ºï¼yoursite.com/item/view/1/helloï¼é£ä¹route()åå²ä¹åï¼ Controlleråå°±æ¯ï¼itemactionåå°±æ¯ï¼viewURLåæ°å°±æ¯ï¼array(1, hello) åå²å®æåï¼åå®ä¾åæ§å¶å¨ï¼itemControllerï¼å¹¶è°ç¨å ¶ä¸çviewæ¹æ³ ã 3.7 Controlleråºç±» æ¥ä¸æ¥ï¼å°±æ¯å¨ fastphp ä¸å建MVCåºç±»ï¼å æ¬æ§å¶å¨ã模ååè§å¾ä¸ä¸ªåºç±»ã æ°å»ºæ§å¶å¨åºç±»ï¼æä»¶å Controller.class.phpï¼åè½å°±æ¯æ»è°åº¦ï¼å 容å¦ä¸ï¼ \_controller = $controller; $this->\_action = $action; $this->\_view = new View($controller, $action); } // åé åé public function assign($name, $value) { $this->\_view->assign($name, $value); } // 渲æè§å¾ public function render() { $this->\_view->render(); } } Controller ç±»ç¨assign()æ¹æ³å®ç°æåéä¿åå°View对象ä¸ã è¿æ ·ï¼å¨è°ç¨$this-> render() åè§å¾æä»¶å°±è½æ¾ç¤ºè¿äºåéã 3.8 Modelåºç±» æ°å»ºæ¨¡ååºç±»ï¼ç»§æ¿èªæ°æ®åºæä½ç±»Sqlç±»ï¼å ä¸ºæ°æ®åºæä½æ¯è¾å¤æï¼ã 模ååºç±»æä»¶å为 Model.class.phpï¼ä»£ç å¦ä¸ï¼ connect(self::$dbConfig\['host'\], self::$dbConfig\['username'\], self::$dbConfig\['password'\], self::$dbConfig\['dbname'\]); // è·åæ°æ®åºè¡¨å if (!$this->\_table) { // è·å模åç±»åç§° $this->\_model = get\_class($this); // å é¤ç±»åæåç Model å符 $this->\_model = substr($this->\_model, 0, -5); // æ°æ®åºè¡¨åä¸ç±»åä¸è´ $this->\_table = strtolower($this->\_model); } } } 建ç«ä¸ä¸ªæ°æ®åºåºç±» Sql.class.phpï¼ä»£ç å¦ä¸ï¼ PDO::FETCH\_ASSOC); $this->\_dbHandle = new PDO($dsn, $username, $password, $option); } catch (PDOException $e) { exit('é误: ' . $e->getMessage()); } } // æ¥è¯¢æ¡ä»¶ public function where($where = array()) { if (isset($where)) { $this->filter .= ' WHERE '; $this->filter .= implode(' ', $where); } return $this; } // æåºæ¡ä»¶ public function order($order = array()) { if(isset($order)) { $this->filter .= ' ORDER BY '; $this->filter .= implode(',', $order); } return $this; } // æ¥è¯¢ææ public function selectAll() { $sql = sprintf("select \* from \`%s\` %s", $this->\_table, $this->filter); $sth = $this->\_dbHandle->prepare($sql); $sth->execute(); return $sth->fetchAll(); } // æ ¹æ®æ¡ä»¶ (id) æ¥è¯¢ public function select($id) { $sql = sprintf("select \* from \`%s\` where \`id\` = '%s'", $this->\_table, $id); $sth = $this->\_dbHandle->prepare($sql); $sth->execute(); return $sth->fetch(); } // æ ¹æ®æ¡ä»¶ (id) å é¤ public function delete($id) { $sql = sprintf("delete from \`%s\` where \`id\` = '%s'", $this->\_table, $id); $sth = $this->\_dbHandle->prepare($sql); $sth->execute(); return $sth->rowCount(); } // èªå®ä¹SQLæ¥è¯¢ï¼è¿åå½±åçè¡æ° public function query($sql) { $sth = $this->\_dbHandle->prepare($sql); $sth->execute(); return $sth->rowCount(); } // æ°å¢æ°æ® public function add($data) { $sql = sprintf("insert into \`%s\` %s", $this->\_table, $this->formatInsert($data)); return $this->query($sql); } // ä¿®æ¹æ°æ® public function update($id, $data) { $sql = sprintf("update \`%s\` set %s where \`id\` = '%s'", $this->\_table, $this->formatUpdate($data), $id); return $this->query($sql); } // å°æ°ç»è½¬æ¢ææå ¥æ ¼å¼çsqlè¯å¥ private function formatInsert($data) { $fields = array(); $values = array(); foreach ($data as $key => $value) { $fields\[\] = sprintf("\`%s\`", $key); $values\[\] = sprintf("'%s'", $value); } $field = implode(',', $fields); $value = implode(',', $values); return sprintf("(%s) values (%s)", $field, $value); } // å°æ°ç»è½¬æ¢ææ´æ°æ ¼å¼çsqlè¯å¥ private function formatUpdate($data) { $fields = array(); foreach ($data as $key => $value) { $fields\[\] = sprintf("\`%s\` = '%s'", $key, $value); } return implode(',', $fields); } } åºè¯¥è¯´ï¼Sql.class.php æ¯æ¡æ¶çæ ¸å¿é¨åã为ä»ä¹ï¼ å 为éè¿å®ï¼æä»¬å建äºä¸ä¸ª SQL æ½è±¡å±ï¼å¯ä»¥å¤§å¤§åå°äºæ°æ®åºçç¼ç¨å·¥ä½ã è½ç¶ PDO æ¥å£æ¬æ¥å·²ç»å¾ç®æ´ï¼ä½æ¯æ½è±¡ä¹åæ¡æ¶çå¯çµæ´»æ§æ´é«ã è¿éçæ°æ®åºå¥æ$this->\_dbHandleè¿è½ç¨å便¨¡å¼è¿åï¼è®©æ°æ®è¯»åæ´é«æï¼è¿é¨åå¯èªè¡å®ç°ã 3.9 Viewåºç±» è§å¾åºç±» View.class.php å 容å¦ä¸ï¼ \_controller = $controller; $this->\_action = $action; } // åé åé public function assign($name, $value) { $this->variables\[$name\] = $value; } // æ¸²ææ¾ç¤º public function render() { extract($this->variables); $defaultHeader = APP\_PATH . 'application/views/header.php'; $defaultFooter = APP\_PATH . 'application/views/footer.php'; $controllerHeader = APP\_PATH . 'application/views/' . $this->\_controller . '/header.php'; $controllerFooter = APP\_PATH . 'application/views/' . $this->\_controller . '/footer.php'; $controllerLayout = APP\_PATH . 'application/views/' . $this->\_controller . '/' . $this->\_action . '.php'; // 页头æä»¶ if (file\_exists($controllerHeader)) { include ($controllerHeader); } else { include ($defaultHeader); } include ($controllerLayout); // 页èæä»¶ if (file\_exists($controllerFooter)) { include ($controllerFooter); } else { include ($defaultFooter); } } } è¿æ ·ï¼æ ¸å¿çPHP MVCæ¡æ¶æ ¸å¿å°±å®æäºã ä¸é¢æä»¬ç¼ååºç¨æ¥æµè¯æ¡æ¶åè½ã 4 åºç¨ 4.1 æ°æ®åºé¨ç½² å¨ SQL 䏿°å»ºä¸ä¸ª project æ°æ®åºï¼å¢å ä¸ä¸ªitem 表ãå¹¶æå ¥ä¸¤æ¡è®°å½ï¼å½ä»¤å¦ä¸ï¼ CREATE DATABASE \`project\` DEFAULT CHARACTER SET utf8 COLLATE utf8\_general\_ci;USE \`project\`;CREATE TABLE \`item\` ( \`id\` int(11) NOT NULL auto\_increment, \`item\_name\` varchar(255) NOT NULL, PRIMARY KEY (\`id\`) ) ENGINE=InnoDB AUTO\_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTO \`item\` VALUES(1, 'Hello World.');INSERT INTO \`item\` VALUES(2, 'Lets go!'); 4.2 é¨ç½²æ¨¡å ç¶åï¼æä»¬è¿éè¦å¨ models ç®å½ä¸å建ä¸ä¸ª ItemModel.php 模åï¼å 容å¦ä¸ï¼ selectAll(); $this->assign('title', 'å ¨é¨æ¡ç®'); $this->assign('items', $items); $this->render(); } // æ·»å è®°å½ï¼æµè¯æ¡æ¶DBè®°å½å建ï¼Createï¼ public function add() { $data\['item\_name'\] = $\_POST\['value'\]; $count = (new ItemModel)->add($data); $this->assign('title', 'æ·»å æå'); $this->assign('count', $count); $this->render(); } // æ¥çè®°å½ï¼æµè¯æ¡æ¶DBè®°å½è¯»åï¼Readï¼ public function view($id = null) { $item = (new ItemModel)->select($id); $this->assign('title', 'æ£å¨æ¥ç' . $item\['item\_name'\]); $this->assign('item', $item); $this->render(); } // æ´æ°è®°å½ï¼æµè¯æ¡æ¶DBè®°å½æ´æ°ï¼Updateï¼ public function update() { $data = array('id' => $\_POST\['id'\], 'item\_name' => $\_POST\['value'\]); $count = (new ItemModel)->update($data\['id'\], $data); $this->assign('title', 'ä¿®æ¹æå'); $this->assign('count', $count); $this->render(); } // å é¤è®°å½ï¼æµè¯æ¡æ¶DBè®°å½å é¤ï¼Deleteï¼ public function delete($id = null) { $count = (new ItemModel)->delete($id); $this->assign('title', 'å 餿å'); $this->assign('count', $count); $this->render(); } } 4.4 é¨ç½²è§å¾ å¨ views ç®å½ä¸æ°å»º header.php å footer.php ä¸¤ä¸ªé¡µå¤´é¡µèæ¨¡æ¿ï¼å¦ä¸ã header.php å 容ï¼footer.php å 容ï¼
页头æä»¶ç¨å°äºmain.cssæ ·å¼æä»¶ï¼å 容ï¼
input { font-family:georgia,times; font-size:24px; line-height:1.2em; }a { color:blue; font-family:georgia,times; font-size:20px; line-height:1.2em; text-decoration:none; }a:hover { text-decoration:underline; }h1 { color:#000000; font-size:41px; border-bottom:1px dotted #cccccc; }
ç¶åï¼å¨ views/item å建以ä¸å 个è§å¾æä»¶ã
index.phpï¼æµè§æ°æ®åºå item è¡¨çææè®°å½ï¼å 容ï¼
---- å é¤
add.phpï¼æ·»å è®°å½ï¼å 容ï¼
æåæ·»å æ¡è®°å½ï¼ç¹å»è¿å
view.phpï¼æ¥çåæ¡è®°å½ï¼å 容ï¼
è¿åupdate.phpï¼æ´æ¹è®°å½ï¼å 容ï¼
æåä¿®æ¹é¡¹ï¼ç¹å»è¿å
delete.phpï¼å é¤è®°å½ï¼å 容ï¼
æåå é¤é¡¹ï¼ç¹å»è¿å
4.5 åºç¨æµè¯
è¿æ ·ï¼å¨æµè§å¨ä¸è®¿é® projectç¨åºï¼http://localhost/item/index/ï¼å°±å¯ä»¥çå°ææäºã
以ä¸ä»£ç å·²ç»å ¨é¨åå¸å° github ä¸ï¼å ³é®é¨åå äºæ³¨éï¼
ä»åºå°åï¼https://github.com/yeszao/fastphpæºç æå ï¼https://github.com/yeszao/fastphp/archive/master.zip
è使å½ä½è ææãåä¸è½¬è½½è¯·èç³»ä½è è·å¾ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ãäºèç½+æ¶ä»£ï¼æ¶å»è¦ä¿æå¦ä¹ ï¼æºæåéPHP,Dream It Possibleã