Zend framework版blog的demo实例教程

原创 2007年10月09日 09:25:00
第一步:
  首先去这个网址下载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的方法
 

Zend Framework2.3.3入门简单实例-登录功能

今天来实现一个简单的用户登录功能,效果如下图。 现在就来介绍大概的开发过程。 一、新建一个数据库wenotebook Wenotebook数据库有一个数据表account,结构如下: CREATE ...
  • HP_BIGPIG
  • HP_BIGPIG
  • 2014年12月21日 01:18
  • 1804

Zend Framework 入门教程(简体中文版)

Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat...
  • socho
  • socho
  • 2014年10月02日 17:34
  • 2752

Zend framework中的增删改查常用方法

  • u010139093
  • u010139093
  • 2014年04月19日 22:07
  • 2103

ZendFramework2开发-列表分页功能

假设配置的路由如下: 'routes' => array( 'user' => array( 'type' ...
  • liuyangwuhan1980
  • liuyangwuhan1980
  • 2014年09月18日 15:37
  • 780

zend framework2 实现多数据库配置使用的另一种方法

zend framework2 实现多数据库却换配置使用的方法,简单,好用
  • a437629292
  • a437629292
  • 2014年11月25日 17:48
  • 1603

php中MVC zend framework框架在apache上的配置方法以及创建步骤,配置虚拟主机

MVC zend framework框架在apache上的配置方法以及创建步骤: (1)
  • yanlintao1
  • yanlintao1
  • 2014年05月08日 10:26
  • 1073

Zend----Framework部署,运行流程

自动部署Zend Framework: 1、下载zend framework 2、cmd下输入如下命令创建项目 > cd 你解压后的zend路径 如:E:\ZendFramework-1.11.10...
  • damys
  • damys
  • 2015年02月26日 13:39
  • 816

zend framework2使用教程【二】–读取数据

这篇教程篇幅可能会很长,大家要有耐心看,文章最后有源码下载,站长建议大家下载了源码后对照教程看,会更顺畅。 zf2是用模块系统在每个模块中来组织管理你的主应用程序代码,在上一教程中,Applic...
  • u010409284
  • u010409284
  • 2013年08月08日 12:00
  • 1382

ZendFramework2学习笔记 国际化、多语言

为zf2项目配置指定国家的语言。
  • liuyangwuhan1980
  • liuyangwuhan1980
  • 2014年11月24日 13:32
  • 1335

ZendFramework2学习笔记 验证码

ZF2提供了图片验证码Zend\Captcha\Image和符号字符验证码Zend\Captcha\Figlet,图片验证码是网站应用中见得比较多的一种验证码,本文以图片验证码为例。...
  • liuyangwuhan1980
  • liuyangwuhan1980
  • 2014年12月12日 15:22
  • 1156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Zend framework版blog的demo实例教程
举报原因:
原因补充:

(最多只允许输入30个字)