HDWiki/運行機制和原理
基本原理[ ]
HDwiki運行機制和原理很簡單,一句話:通過傳入特定的URL以分發(fā)給相應的控制器中某個函數進行處理,最后將控制器處理后信息呈現于所包含的視圖中。
在WEB開發(fā)中,主要工作無外呼是顯示頁面和提交表單這兩個工作。因此控制器通過URL訪問來確定顯示頁面,得到信息后那么只需要顯示的視圖”。而處理表單只需要處理完后重定向或者輸出某個信息。
為了最簡單完成MVC模式開發(fā)的要求,在開發(fā)過程中,需要遵循3個規(guī)則:
1、URL中都必須帶有兩個參數 ,分別是control和method,用于表明改URL將由哪一控制器及方法處理
2、表單提交中的參數統(tǒng)一被處理,防SQL注入等,在一個control的方法里面不能帶用$_POST或$_GET。如果要訪問表單提交的參數,則通過$this->post['username']或 $this->get[3]類似的形式。
3、控制器類的文件名定義了控制器能做到事情,如user.php,表示這個是和用戶相關的控制器,所以注冊登錄等都應該寫道user.php里面。這里框架設計的時候,考慮到不需要控制器去調用控制器,所以所有的控制器的類名都是相同,名字就叫做 control
另外注意linux下區(qū)分大小寫,建議統(tǒng)一使用小寫.
HDwiki運行機制和原理[ ]
index.php文件中有兩個參數control和method,此兩個參數會交由../model/HDwiki.class.php文件以分發(fā)到user控制器中的doregister方法,也就是說control和method用來指定哪一控制器和控制器中的那個方法處理。最后將處理后的數據顯示到view下view/default/register.htm中.
如何找到HDwiki相關代碼[ ]
當大家想改動某個功能的代碼的時候,一定要先看清這個功能的URL。
例如:瀏覽詞條的URL為 :doc-view-1
那么,說明這個瀏覽詞條的相關代碼在 control/doc.php 里面的 doview方法。
其中URL中的第一段為doc,表明代碼在 control/doc.php 里面,第二段為view,表示調用的方法是 doview
再如:百科分類的URL為:category.html
其中URL中的第一段為category,表明代碼在 control/category.php 里面,第二段為空,表示調用的方法是默認方法 dodefault
例子:想改動后臺seo設置的代碼
后臺的SEO設置的url為:index.php?admin_setting-seo
那么,你就找到 control/admin_setting.php 這個文件
然后 查找 function doseo()
這個里面的代碼就是你需要改動的地方。
開發(fā)實例[ ]
步驟:
(1)、建立注冊的模板頁面 view\default\register.htm
(2)、 打開control目錄,建立一個文件user.php,代碼內容如下:
<?php !defined('IN_HDwiki') && exit('Access Denied'); class control extends base{ function control(& $get,& $post){ $this->base( & $get,& $post); $this->load('user'); } function doregister() { if(!isset($this->post['submit'])){ $this->view->display('register'); exit; } $user_nick=$this->post['nick_name']; $password=$this->post['password']; $this->post['re_password']; $email=$this->post['email_addr']; $_ENV['user']->add_user($user_nick, $password, $email); echo '恭喜 <b>'.$user_nick.'</b> 注冊成功!'; } } ?>
(3)、打開model目錄,建立一個文件user.class.php ,代碼內容如下:
<?php !defined('IN_HDwiki') && exit('Access Denied'); class usermodel { var $db; var $base; function usermodel(&$base) { $this->base = $base; $this->db = $base->db; } function add_user($user_nick, $password, $email) { $password = md5($password); $user_nick_upper=strtoupper($user_nick); $this->db->query(" INSERT INTO ".DB_TABLEPRE."user(user_email,user_nick,user_nick_upper,user_password) values ('$email','$user_nick','$user_nick_upper','$password') "); return $this->db->insert_id(); } } ?>
(4)訪問: http://127.0.0.1/HDwiki/index.php?user-register 即可看到效果
注意事項[ ]
在control中獲得頁面提交的參數共有兩種方法:
1、$this->get[2]; //獲取get方式的參數,按照數字序號
2、$this->post['username']; //獲取post的參數,按照表單名字
相關調用代碼[ ]
1、獲取ip $this->ip;
2、獲取設置參數 $this->setting['site_name'];
3、獲得當前用戶 $this->user;
4、獲得語言文件變量 $this->view->lang['adduserSuccess'];
5、頁面上需要顯示時間的時候,請注意,需要調用date方法
while($user=$this->db->fetch_array($query)){ $user['lasttime']=$this->date($user['lasttime']); $user['regtime']=$this->date($user['regtime']); $userlist[]=$user; }
參考來源[ ]
HDWIKI使用手冊導航 | ||||||
---|---|---|---|---|---|---|
|