基于zend framework的留言本实现

来源:互联网 发布:win10 linux子系统 编辑:程序博客网 时间:2024/05/16 06:31
暑假实习时开始接触php,和zend框架。正是到了动手才能有所突破的瓶颈,所以就把phper杂志里面的留言本程序改成了基于zend的面向对象实现。

首先是数据对象即留言实例对应于数据库中的表:message

 class Messages extends Zend_Db_Table
 {
  protected $_name="message";
 }

直接派生于zendframework中的Zend_Db_Table.只需指定数据库中的表即可。访问muysql数据库只需指定默认适配器:

$config = new Zend_Config_Ini('./application/config.ini', 'config');
 $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
 Zend_Db_Table::setDefaultAdapter($db);

config.ini文件中包含有访问数据库需要的信息:使用本地服务器,用户名,密码,和数据库的名称。

接下去就是定义控制器Controller和行为Action了。

这里要处理的东西不多,主要有两件:一是呈现已有的留言,一个是添加留言。分别在连个函数中处理

indexAction

从数据库中取得数据,传递给模板:

     function indexAction()
     {
/*      require_once('./application/models/Messages.php');
      $messages=new Messages();
      $message=$messages->fetchAll();//Zend_Db_Table_Rowset Object
      $this->view->Messages=$message;
*/
   $db     = Zend_Db_Table::getDefaultAdapter();
   $sql    = "SELECT * FROM `message` ORDER BY `id` DESC";
   $result = $db->query($sql);
   $this->view->Messages=$result->fetchAll();//array object
     }

我采用了两种方式,因为数据库返回对象不同。被我注释掉的那种方式返回的$message含有很多的无用数据。获取数据是也只能以属性的方式获取。即使用操作符->。

后一种方式返回的是数组。只包含要显示的留言信息。

查看数组形式的数据可以用print_r函数检验。

addAction

完成数据的检验和插入数据库操作。

if($this->_request->isPost())
   {
    $username = $this->_request->getPost('username');
    $content  = $this->_request->getPost('content');
    if($username!=''&&$content!='')
    {
     require_once('./application/function.inc.php');
     $time = time();
     $ip = get_client_ip();
     $data = array(
      'username'=>$username,
      'content' =>$content,
      'time'=>$time,
      'ip'=>$ip,
     );
     require_once('./application/models/Messages.php');
     $messages=new Messages();
     $messages->insert($data);
     $this->_redirect('/');
    }
   }

首先检测是不是提交的数据,入如果不是则显示留言的界面,是则完成数据库insert并重定向到index页面显示提交的所有留言。
其它部分可以参看我的源码。我的改写没有使用smarty模板,主要是因为自己不熟悉smarty和zend framework之间相互操作。对内容的过滤方面也没有做,filter部分内容还差不多一窍不通。请大家提供意见。
 
原创粉丝点击