`
阿尔萨斯
  • 浏览: 4180715 次
社区版块
存档分类
最新评论

基于zend framework的留言本实现

 
阅读更多
暑假实习时开始接触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部分内容还差不多一窍不通。请大家提供意见。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics