找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 5150|回复: 1

网页制作的最快模式(MVC)

[复制链接]
发表于 2006-7-1 22:26:47 | 显示全部楼层 |阅读模式
<p>    上周为交作业(多媒体制作),做了一个网站,关于电影的.做完之后有几点心得,想与大家分享一下<br />     一般来说,大家都认为在小型网站制作时采用在HTML中嵌入代码的方式是最快的(指开发速度),但是经过这次实践,我部这么认为了,原因如下:<br />     这个几个网页我采用了PHP+ Zend Framework+SQLITE Database(因为教室没有数据库,只好用嵌入式数据库):<br />     首先,制作了一个统一的基类:<br /><?php<br />require_once 'Zend/Controller/Action.php';<br />require_once './wps/libs/User.php';<br />define('__PAGE_ROOT__','./wps/controller/');</p><p>session_cache_limiter('private, must-revalidate');<br />session_start();<br />abstract class WPS_COMMON_PAGE extends Zend_Controller_Action<br />{<br /> protected function _setCookie($param,$value,$expire= 3600)<br /> {<br />  setcookie($param,$value,time() + $expire,'/');<br /> }<br /> protected static function _getDb()<br /> {<br />  return new SQLiteDatabase('./wps/database.db');<br /> }<br /> protected function _getCookie($param)<br /> {<br />  if(!empty($_COOKIE['user']))<br />  {<br />   return $_COOKIE['user'];<br />  }<br />  else return false;<br /> }<br /> protected static function _getTpl()<br /> {<br />  require_once './wps/smarty/Smarty.class.php';<br />  return new Smarty;<br /> }<br /> protected function _getCurUser()<br /> {<br />  if(isset($_SESSION['user']))<br />  {<br />       return unserialize($_SESSION['user']);<br />  }<br />  else return false;<br /> }<br /> protected function _isLogin()<br /> {<br />  if(!empty($_SESSION['user']))<br />  {<br />   return true;<br />  }<br />  else return false;<br /> }<br /> protected function _setCurUser(User $user)<br /> {<br />  if($user instanceof User)<br />  {<br />        $_SESSION['user'] = serialize($user);<br />  }<br />  else throw new WPS_EXCEPTION('背设置得用户不是合法用户');<br /> }<br /> protected function _logOff()<br /> {<br />  session_destroy();<br /> }<br /> public function viewsourceAction()<br /> {<br />  $path = __PAGE_ROOT__.get_class($this).'.php';<br />  $source = highlight_file($path , true);<br />  $tpl = self::_getTpl();<br />  $user = $this->_getCurUser();<br />  $tpl->assign(array('user'=>$user , 'source'=> $source));<br />  $tpl->display('show_source.tpl');<br /> }<br />}<br />?><br />这个基类完成权限认证,模板,数据库(不喜欢zf的寄存器写法)<br />定义USER:<br /><?php<br />require_once './wps/libs/WPS_EXCEPTION.php';<br />class User<br />{<br /> const GUEST_RIGHT = 0;<br /> const USER_RIGHT  = 1;<br /> const SUPPER_RIGHT = 2;<br /> const ADMIN_RIGHT = 3;<br /> const SYSTEM_RIGHT = 4;<br /> private $_readonly = array('name','id','auth');<br /> public $_info = array();<br /> public function __construct($name , $id , $auth = 0)<br /> {<br />  $this->_info['name'] = $name;<br />  $this->_info['id']   = $id;<br />  $auth = (int) $auth;<br />  if($auth >= 0 && $auth <= 4)<br />  {<br />   $this->_info['auth'] = $auth;<br />  }<br />  else throw new WPS_EXCEPTION('错误的权限参数!');<br /> }<br /> public function __get($proper)<br /> {<br />  if(!isset($this->_info[$proper]))<br />  {<br />   return null;<br />  }<br />  else return $this->_info[$proper];<br /> }<br /> public function __set($proper , $value)<br /> {<br />  if(in_array($proper , $this->_readonly))<br />  {<br />   throw new WPS_EXCEPTION('不能对USER的只读属性赋值!',1);<br />  }<br />  else $this->_info[$proper] = $value;<br /> }<br />}<br />?></p>
 楼主| 发表于 2006-7-1 22:29:09 | 显示全部楼层

网页制作的最快模式(MVC)

<p>然后,让所有的页面都继承自那个基类,开发速度飞快:<br />如评论的页面:<br />require_once './wps/libs/WPS_COMMON_PAGE.php';</p><p>class CommentController extends WPS_COMMON_PAGE<br />{<br /> public function indexAction()<br /> {<br />  $tpl = self::_getTpl();<br />  if(!$_POST)<br />  {<br />   if(!$this->_getCurUser())<br />   {<br />    echo "请先登陆!";<br />    return;<br />   }<br />   $param = $this->_getAllParams();<br />   $tpl->assign(array('to'=>$param['id'],'referer'=>$_SERVER['HTTP_REFERER'],'user'=>$this->_getCurUser(),'ip'=>$_SERVER['REMOTE_ADDR']));<br />   $tpl->display('comment_add.tpl');<br />  }<br />  else<br />  {<br />   $user = $this->_getCurUser();<br />   $db = self::_getDb();<br />   if(!trim($_POST['comment']))<br />   {<br />    $tpl->assign(array('to'=>$_POST['to'],'referer'=>$_POST['referer'],'error_info'=>'请输入评论类容!','user'=>$user,'ip'=>$_SERVER['REMOTE_ADDR']));<br />    $tpl->display('comment_add.tpl');<br />    return;<br />   }<br />   $_POST['comment'] = htmlspecialchars($_POST['comment']);<br />   $_POST['comment'] = str_replace(" "," ",$_POST['comment']);<br />   $_POST['comment'] =  nl2br($_POST['comment']);<br />   $time = date('Y F d l',time());<br />   $sql = "insert into comment('to','user','time','comment') values ('$_POST[to]','$user->name','$time','$_POST[comment]')";<br />   if(!$db->query($sql))<br />   {<br />    echo "写入数据错误<br />$sql";<br />   }<br />   else<br />   {<br />    $this->_redirect($_POST['referer']);<br />   }<br />  }<br /> }<br /> public static function _getComment($id)<br /> {<br />  $db = self::_getDb();<br />  $items = $db->arrayQuery("select * from comment where to = $id order by id DESC;",SQLITE_ASSOC);<br />  return $items;<br /> }<br />}<br />?><br />做了几个页面,麻雀虽小,肝胆俱全啊,一天就 做完了(数据是做了页面让女生输的)</p><!--editpost--><br /><br /><br /><div><font class='editinfo'>此帖由 wps2000 在 2006-07-03 18:39 进行编辑...</font></div><!--editpost1-->
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表