第一步:
首先去这个网址下载zf. http://framework.zend.com/download
在 apache中建立一个project目录,把zf中的library目录放入project目录.另外需要新建几个目录,新建一个index.php文件和.htaccess文件在www目录里面,结构如下:
/project/app/controllers/ /project/app/models/ /project/app/views/ /project/www/.htaccess /project/www/index.php /project/library/
然后需要配置apache的rewrite模块,具体 方法自己google了,把下面的字符复制进.htaccess里面
[Copy to clipboard]CODE: 接着配置apahce的conf,把主路径设置到/project/www/
第二步:
在数据库创建表:
[Copy to clipboard]CODE:CREATE TABLE post (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50), body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL );
INSERT INTO post (title,body,created) VALUES (’标题1′, ‘内容1′, NOW()); INSERT INTO post (title,body,created) VALUES (’标题2′, ‘内容2′, NOW()); INSERT INTO post (title,body,created) VALUES (’标题3′, ‘内容3′, NOW()); 接着配置apache的pdo.请看haohappy的大作Zend_Db连接 MySQL(附完整 代码),看如何配置pdo就可以了.其他不用理会,我跟他方式稍微有点不同
接着需要写一下/project/www/目录下的index.php,这是唯一的入口点.也可以视为配置文件.
? include ‘Zendphp’; require ‘appmodelsdbphp’;//加载db类//include Zend.php后,就可以用loadClass函数指定类名,自动加载需要ZF的类 function __autoload$classZendloadClass$class); } //初始化db,并放入 对象寄存器 $db = new dataZendregister‘db’, $db$view = new Zend_View; //设置路径 $viewsetscrīptPath‘appviews’//放入对象寄存器 Zendregister‘view’, $view$controller getInstance//设置路径 $controller‘appcontrollers’//调用dispath()抽取出controller名称和action名称,自动找到适合controller等处理. $controllerdispatch
上面的注释应该讲解的比较清楚了.Zend::register()可能是比较迷惑的,我比较喜欢叫做对象寄存器,因为这个函数的功能就象计算机的寄存器一样暂时存放数据,要拿的时候随时可以获得.
你可能已经发现,我们自定义了一个db类,好的,我们来创建一个db类,先来到/project/app/models/目录下,创建一个db.php文件,打入如下代码
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
}
第三步:显示数据 来到/project/app/controllers/下,创建一个IndexController.php文件,这里需要注意一下类名和方法名,框架 都有一些约定的写法.IndexController表示名为index的controller,indexAction表示名为index的 action.还不清楚,不要紧.下面还有controller类要写,对比一下就知道什么意思了
代码如下:
class IndexController extends {
private $view;
private $post;
function __construct//从对象寄存器中取出对象
$thisview Zendregistry‘view’$thispost Zendregistry‘db’);
}
public function indexAction$thisviewinfo $thispostfindAll//调用View代码"index.php"来显示数据,必须要echo,不然不显示模板.
echo $thisviewrender‘indexphp’);
}
//没有action的情况
public function noRouteAction$this_redirect‘’);
}}
index的controller和action都是默认值.所以要实现了它.这里的Zend::registry(’view’)跟上面的www目录中的index.php里面的Zend::register(’view’, $view);对应,一个存一个取对象.
回到/project/app/models/目录的db.php写一个函数
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
function findAll$result $thisdbquery‘SELECT FROM post’//返回所有的结果放入数组
$row $resultfetchAll();
return $row;
}}
回到IndexController.php文件,就知道了$this-post-findAll();是调用db类中的函数而已.
然后就来到/project/app/views/目录下了,创建一个index.php文件,实现你的模板.^_^
html head /head body 浏览帖子/ table
tr
thId/th
th/th
th发帖时间 /th
/tr
?php foreach ($thisinfo as $post
tr
td?php echo $thisescape$post‘id’/td
td
a href="/view/?php echo $thisescape$post‘id’"
?php echo $thisescape$post‘title’
/a
/td
td?php echo $thisescape$post‘created’/td
/tr
?php }
/table /body /html
$this-info来自controller的$this-view对象.$this-escape()是对变量进行过滤,可以不用,不过最好还是加上.
要浏览怎么做呢?URL的格式:http://localhost/controller/action
这里你可以用http://localhost/index/index访问.第一个index是controller名,第二个index是action名.
也许你已经发现了.点击标题链接会出错.^_^.那是因为还没有实现那个功能呢.^_^
我们需要点击一下标题就看里面的文章,从上面模板已经得知,我们用/view/id的方式传值,那么需要ViewController类和一个能接收id的方法.不过还是先把db中的函数实现了,代码如下:
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
function findAll$result $thisdbquery‘SELECT FROM post’//返回所有的结果放入数组
$row $resultfetchAll();
return $row;
}
function getBody$id//返回第一行记录,可以查查zf文档
$result $thisdbfetchRow"SELECT * FROM post WHERE id =’$id’");
return $result;
} }
好了,需要的函数已经实现了,那么下一步实现controller了,还是在controllers目录中创建一个ViewController.php文件.代码如下:
?class ViewController extends {
private $view;
private $body;
function __construct//从对象寄存器中取出对象
$thisview Zendregistry‘view’$thisbody Zendregistry‘db’);
}
//别忘了实现indexAction方法
function indexAction$this_redirect‘’);
}
function __call$id,$args//过滤一下
$id Zend_FiltergetDigits$id$thisviewdata $thisbodygetBody$id);
echo $thisviewrender‘viewphp’);
} }
这里用__call魔法函数接收$id,往下看,又碰到一个新东西,Zend_Filter::getDigits()用来过滤的,非数字都被过滤掉.
下面来看看view方面了.还是老规矩,在views下创建一个view.php.
html head /head bodyh1?php echo $this-escape($this-data[‘title’]);?/h1
psmallCreated: ?php echo $this-escape($this-data[‘created’]);?/small/p
p?php echo $this-escape($this-data[‘body’]);?/p /body /html
这样显示部分就全部完成了.自己浏览一下,浏览方法.上面已经说了.其实直接用http://localhost也可以,因为实现了IndexController.另外还实现了一个noRouteAction的方法
首先去这个网址下载zf. http://framework.zend.com/download
在 apache中建立一个project目录,把zf中的library目录放入project目录.另外需要新建几个目录,新建一个index.php文件和.htaccess文件在www目录里面,结构如下:
/project/app/controllers/ /project/app/models/ /project/app/views/ /project/www/.htaccess /project/www/index.php /project/library/
然后需要配置apache的rewrite模块,具体 方法自己google了,把下面的字符复制进.htaccess里面
[Copy to clipboard]CODE: 接着配置apahce的conf,把主路径设置到/project/www/
第二步:
在数据库创建表:
[Copy to clipboard]CODE:CREATE TABLE post (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50), body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL );
INSERT INTO post (title,body,created) VALUES (’标题1′, ‘内容1′, NOW()); INSERT INTO post (title,body,created) VALUES (’标题2′, ‘内容2′, NOW()); INSERT INTO post (title,body,created) VALUES (’标题3′, ‘内容3′, NOW()); 接着配置apache的pdo.请看haohappy的大作Zend_Db连接 MySQL(附完整 代码),看如何配置pdo就可以了.其他不用理会,我跟他方式稍微有点不同
接着需要写一下/project/www/目录下的index.php,这是唯一的入口点.也可以视为配置文件.
? include ‘Zendphp’; require ‘appmodelsdbphp’;//加载db类//include Zend.php后,就可以用loadClass函数指定类名,自动加载需要ZF的类 function __autoload$classZendloadClass$class); } //初始化db,并放入 对象寄存器 $db = new dataZendregister‘db’, $db$view = new Zend_View; //设置路径 $viewsetscrīptPath‘appviews’//放入对象寄存器 Zendregister‘view’, $view$controller getInstance//设置路径 $controller‘appcontrollers’//调用dispath()抽取出controller名称和action名称,自动找到适合controller等处理. $controllerdispatch
上面的注释应该讲解的比较清楚了.Zend::register()可能是比较迷惑的,我比较喜欢叫做对象寄存器,因为这个函数的功能就象计算机的寄存器一样暂时存放数据,要拿的时候随时可以获得.
你可能已经发现,我们自定义了一个db类,好的,我们来创建一个db类,先来到/project/app/models/目录下,创建一个db.php文件,打入如下代码
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
}
第三步:显示数据 来到/project/app/controllers/下,创建一个IndexController.php文件,这里需要注意一下类名和方法名,框架 都有一些约定的写法.IndexController表示名为index的controller,indexAction表示名为index的 action.还不清楚,不要紧.下面还有controller类要写,对比一下就知道什么意思了
代码如下:
class IndexController extends {
private $view;
private $post;
function __construct//从对象寄存器中取出对象
$thisview Zendregistry‘view’$thispost Zendregistry‘db’);
}
public function indexAction$thisviewinfo $thispostfindAll//调用View代码"index.php"来显示数据,必须要echo,不然不显示模板.
echo $thisviewrender‘indexphp’);
}
//没有action的情况
public function noRouteAction$this_redirect‘’);
}}
index的controller和action都是默认值.所以要实现了它.这里的Zend::registry(’view’)跟上面的www目录中的index.php里面的Zend::register(’view’, $view);对应,一个存一个取对象.
回到/project/app/models/目录的db.php写一个函数
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
function findAll$result $thisdbquery‘SELECT FROM post’//返回所有的结果放入数组
$row $resultfetchAll();
return $row;
}}
回到IndexController.php文件,就知道了$this-post-findAll();是调用db类中的函数而已.
然后就来到/project/app/views/目录下了,创建一个index.php文件,实现你的模板.^_^
html head /head body 浏览帖子/ table
tr
thId/th
th/th
th发帖时间 /th
/tr
?php foreach ($thisinfo as $post
tr
td?php echo $thisescape$post‘id’/td
td
a href="/view/?php echo $thisescape$post‘id’"
?php echo $thisescape$post‘title’
/a
/td
td?php echo $thisescape$post‘created’/td
/tr
?php }
/table /body /html
$this-info来自controller的$this-view对象.$this-escape()是对变量进行过滤,可以不用,不过最好还是加上.
要浏览怎么做呢?URL的格式:http://localhost/controller/action
这里你可以用http://localhost/index/index访问.第一个index是controller名,第二个index是action名.
也许你已经发现了.点击标题链接会出错.^_^.那是因为还没有实现那个功能呢.^_^
我们需要点击一下标题就看里面的文章,从上面模板已经得知,我们用/view/id的方式传值,那么需要ViewController类和一个能接收id的方法.不过还是先把db中的函数实现了,代码如下:
? class data{
private $db;
private $params;
function __construct$thisparams = array (‘host’ = ‘127.0.0.1′,
‘username’ = ‘root’,
‘password’ = ‘111111′,
‘dbname’
= ‘blog’$thisdb Zend_Dbfactory‘pdoMysql’, $thisparams);
}
function findAll$result $thisdbquery‘SELECT FROM post’//返回所有的结果放入数组
$row $resultfetchAll();
return $row;
}
function getBody$id//返回第一行记录,可以查查zf文档
$result $thisdbfetchRow"SELECT * FROM post WHERE id =’$id’");
return $result;
} }
好了,需要的函数已经实现了,那么下一步实现controller了,还是在controllers目录中创建一个ViewController.php文件.代码如下:
?class ViewController extends {
private $view;
private $body;
function __construct//从对象寄存器中取出对象
$thisview Zendregistry‘view’$thisbody Zendregistry‘db’);
}
//别忘了实现indexAction方法
function indexAction$this_redirect‘’);
}
function __call$id,$args//过滤一下
$id Zend_FiltergetDigits$id$thisviewdata $thisbodygetBody$id);
echo $thisviewrender‘viewphp’);
} }
这里用__call魔法函数接收$id,往下看,又碰到一个新东西,Zend_Filter::getDigits()用来过滤的,非数字都被过滤掉.
下面来看看view方面了.还是老规矩,在views下创建一个view.php.
html head /head bodyh1?php echo $this-escape($this-data[‘title’]);?/h1
psmallCreated: ?php echo $this-escape($this-data[‘created’]);?/small/p
p?php echo $this-escape($this-data[‘body’]);?/p /body /html
这样显示部分就全部完成了.自己浏览一下,浏览方法.上面已经说了.其实直接用http://localhost也可以,因为实现了IndexController.另外还实现了一个noRouteAction的方法