`
zhengdl126
  • 浏览: 2530762 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

(一)zendframework blog实例分析

阅读更多
modules  模块
models   模型


modules 对应路径控制的操作 都继承  Zend_Controller_Action,分前台(link)和后台(admin/link)控制器
models  对应表的类操作 都继承  class Common extends Zend_Db_Table

modules 每个动作方法对应一个URL


左侧菜单 :app\views\scripts\admin\script\common.js


admin/article/index
对应modeules下admin目录ArticleController.php的indexAction方法




=================================载入类文件
index.php
set_include_path('.' .PATH_SEPARATOR .'./library'.PATH_SEPARATOR .'./app/models/'.PATH_SEPARATOR .get_include_path());
//设置Zend Framework 自动载入类文件
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();//实现 Zend_Registry 自动转化成调用 Zend/Registry.php ,自动载入类文件

//*****************后期使用
//Zend_Loader::loadClass('Common_Plugin_Fckeditor');
//$oFCKeditor = new Common_Plugin_Fckeditor('content') ;
//来载入library 目录下的多级目录类文件

CategoryControler.php
require('CommonController.php');//得意于 index.php 的set_include_path
class Admin_CategoryController extends Admin_CommonController
{
var $category;
function init() {
parent::init();
$this->category = new Cate();

//Zend_Loader::loadClass('Common_Plugin_Fckeditor');
////$oFCKeditor = new Common_Plugin_Fckeditor('content') ;
//因为Cate.php是在models目录下,所以不必像上面那样loadclass来实例化
}

=======================初始化寄存器 和view
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
$registry = Zend_Registry::getInstance();
$config = new Zend_Config_Ini('./app/config/config.ini',null,true);

/*****************confing.ini 数组格式
[general]
db.adapter = PDO_MYSQL
db.host = localhost
db.username = root
db.password = 123456
db.dbname = zfblog
db.charset = utf8
db.prefix = zf_

[site]
st.domain = http://localhost/zf-blog
st.appdir = /zf-blog
st.sitename = pconline
st.keywords = ZFblog,Zend Framework开源blog,Zend Framework开源项目,ZF教程,Zend Framework最新教程,ZF项目源码下载,Zend 
Framework项目源码下载
st.description = ZFblog,Zend Framework开源blog,Zend Framework开源项目,ZF教程,Zend_Framework最新教程,ZF项目源码下
载,Zend_Framework项目源码下载
st.version = 1.1
st.theme = g7_v5
*/
Zend_Registry::set('config',$config);

$view= new Zend_View();
Zend_Registry::set('theme', $config->site->st->theme);
$view->setScriptPath('./app/views/scripts/'.$config->site->st->theme.'/'); //模板文件位置
$view->setHelperPath('./app/views/helpers/','My_View_Helper');
$registry['view'] = $view;


//邮件配置
Zend_Registry::set('smtp',$config->mail->ml->server);
Zend_Registry::set('username',$config->mail->ml->username);
Zend_Registry::set('password',$config->mail->ml->password);
//*****************Controller.php文件调用:$this->view->keywords = $this->registry['keywords'];



==========================控制器
/*****************控制器一定要指定addModuleDirectory,这样来实现
http://localhost/zf-blog/admin/article/add自动到
./app/modules/admin/controllers/ArticleController.php 方法addaction()

http://localhost/zf-blog/link
自动找到
./app/modules/default/controllers/linkController.php 方法indexaction()
*/
s
$frontController = Zend_Controller_Front::getInstance();
$frontController->setBaseUrl($config->site->st->appdir) //设置基本路径
->setParam('noViewRenderer', true) //不采用官方view
->addModuleDirectory('./app/modules')
->setParam('useDefaultControllerAlways', true)
    ->setParam('noErrorHandler', true)
->registerPlugin(new Common_Plugin_MyAuth($auth, $acl))
->registerPlugin(new Zend_Controller_Plugin_ErrorHandler())
->throwExceptions(true) //false:关闭错误信息
->dispatch();




模板文件---嵌入php代码
<?php foreach ($this->paginator as $lv): ?>
<tr>
<td width="15%"><a class="editlink" href="#" title="点击编辑" alt="<?=$lv['id']?>|<?=$lv['name']?>|<?=$lv['url']?>|<?=$lv['logo']?>|<?=$lv['title']?>"><?=$this->escape($lv['name']); ?></a></td>
<td width="50%"><?=$this->escape($lv['title']); ?></td>
<td width="12%"><?=$this->escape($lv['typename']); ?></td>
<td width="8%"><?=$this->escape($lv['orderNo']); ?></td>
<td width="10%"><?=$this->escape($lv['isApp']); ?></td>
<td width="5%">
<a href="<?=$this->url(array('module'=>'admin','controller'=>'link','action'=>'delete','id'=>$lv['id']),null,true);?>" title="delete"><img src="<?=$this->tplpath;?>images/error.gif" border="0" /></a>
<?php
if($this->escape($lv['isApp'])=='未通过'){
?>
<a href="<?=$this->url(array('module'=>'admin','controller'=>'link','action'=>'app','id'=>$lv['id']),null,true);?>" title="delete"><img src="<?=$this->tplpath;?>images/correct.gif" border="0" /></a>
<?php
}
?>
</td>
</tr>
<?php endforeach;?>



=============================fck
<?=$this->editor;?>

* fck编辑器
*
* @param string $content
*/
function fckAction($content='')
{
//加载FCK类
Zend_Loader::loadClass('Common_Plugin_Fckeditor');

//实例化这个类
$oFCKeditor = new Common_Plugin_Fckeditor('content') ;

//这里是您放置FCK文件的路径.
$oFCKeditor->BasePath = $this->view->domain."/public/fckeditor/";

//FCK皮肤
$oFCKeditor->Config['SkinPath'] =
$this->view->domain.'/public/fckeditor/editor/skins/silver/' ;
$oFCKeditor->Width = '100%';
$oFCKeditor->Height = '600';
$oFCKeditor->Value = $content;
$this->view->editor = $oFCKeditor->CreateHtml();
}

===========================分页zend/view/helper/ paginationControl.php


<?=$this->paginationControl($this->paginator,'Elastic','page.php');?>
//page.php模板文件
//$this->paginationControl=====
zend/view/helper/ paginationControl.php

$link_arr = array();
foreach ($array as $key=>$value) {
$link_arr[$key]['id'] = $value['id'];
$link_arr[$key]['name'] = $value['name'];
$link_arr[$key]['url'] = $value['url'];
$link_arr[$key]['logo'] = $value['logo'];
$link_arr[$key]['title'] = $value['title'];
$link_arr[$key]['typename'] = $cate[$value['type']];
$link_arr[$key]['orderNo'] = $value['orderNo'];
$link_arr[$key]['isApp'] = $value['isApp']?'通过':'未通过';
}

$paginator = Zend_Paginator::factory($link_arr);




=======================================模板写法

<?php if (count($this->paginator)): ?>
<?php endif; ?>

<?php foreach ($this->paginator as $lv): ?>

<?php endforeach;?>




===============================zend cache
前台首页indexcontroller.php

if(!$array = $this->cache->load('indexlistBlog')) {
$array = $this->blog->listBlog();
$this->cache->save($array, 'indexlistBlog');
}
//取出链接类别
if(!$linktype = $this->cache->load('listLinktype')) {
$linktype = $this->linktype->listLinktype();
$this->cache->save($linktype, 'listLinktype');
}

//取出链接
if(!$linkarr = $this->cache->load('listLink')) {
$linkarr = $this->link->listlink();
$this->cache->save($linkarr, 'listLink');
}





Modules/default/controllers/CommonController.php  Zend_Cache_Core 对象
class CommonController extends Zend_Controller_Action
{
var $cache;
function init() {
// 缓存配置
$frontendOptions = array(
'lifeTime' => 120, // 两分钟的缓存生命期
'automatic_serialization' => true
);

$backendOptions = array(
'cache_dir' => "data/cache/" // 放缓存文件的目录
);

// 取得一个Zend_Cache_Core 对象
$this->cache = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);
}



==========================db
入口:

Zend_Registry::set('config',$config);
$dbAdapter = Zend_Db::factory($config->general->db->adapter,$config->general->db->toArray());
$dbAdapter->query("SET NAMES {$config->general->db->charset}");
Zend_Db_Table::setDefaultAdapter($dbAdapter);
Zend_Registry::set('dbAdapter',$dbAdapter);
Zend_Registry::set('dbprefix',$config->general->db->prefix); //写到寄存器方便其他地方调用



Models 下所有类文件blog.php link.php  extends Common

<?php
class Common extends Zend_Db_Table
{
public function __construct()
  {
$dbprefix = Zend_Registry::get('dbprefix');
$this->_name = $dbprefix.$this->_name;
parent::__construct();
  }
}


====================== .htaccess
RewriteEngine on
RewriteRule !\.(js|ico|txt|gif|jpg|png|css|html|xml)$ index.php

php_flag magic_quotes_gpc off
php_flag register_globals off


=======================目录结构




  • 大小: 224.6 KB
0
1
分享到:
评论

相关推荐

    Zend Framework实例教程

    ### Zend Framework实例教程知识点解析 #### 一、简介与安装要求 **Zend Framework**是一款开源的PHP框架,设计用于帮助开发者构建稳定、高效且可扩展的Web应用。本教程聚焦于介绍Zend Framework的核心特性和如何...

    ZendFramework-1.10.4-minimal

    3. **组件库**:Zend Framework 提供了一个强大的组件库,如 Zend_Db 用于数据库操作,Zend_View 用于视图渲染,Zend_Auth 和 Zend_Acl 用于身份验证和访问控制,以及 Zend_Feed 处理 RSS/Atom 订阅等。 4. **面向...

    zend framework中英文手册.rar

    **一、Zend Framework 简介** Zend Framework 是一个开源的、基于组件的 PHP 框架,旨在提供高效的开发环境,以构建高质量的Web应用程序。它遵循MVC(Model-View-Controller)设计模式,支持松耦合的组件结构,使得...

    ZendFramework 2 实例(增、删、改操作)

    ZendFramework 2 实例(增、删、改操作) 环境 php 5.3.5+ 设置环境变量 path apache 2.2 httpd.conf #====PHP支持==== PHPIniDir "C:/Program Files/php/" LoadModule ...

    Zend Framework+smarty用法实例详解

    6. 初始化Zend Framework前端控制器:在index.php中创建一个前端控制器实例,设置控制器目录,启用异常抛出,并设置应用程序的基础URL。 7. 集成Smarty模板引擎:在index.php中配置Zend Framework的前端控制器,...

    ZEND FRAMEWORK 1.11.7 中文参考文档

    Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend Framework •Zend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •...

    zend framework简单实例

    zendframework简单实例

    zend framework 中文手册

    描述提到"zend framework zendframework manual 手册,Zend Framework手册 中文版,有一部分还没有汉化",这意味着虽然该手册是中文版本,但可能并非全部内容都已翻译完成,部分原文可能是英文状态。 **Zend ...

    ZendFramework 2.1.3 实例(相册增、删、改操作)

    ZendFramework 2.1.3 实例(增、删、改操作) 环境 php 5.3.5+ 设置环境变量 path apache 2.2 httpd.conf #====PHP支持==== PHPIniDir "C:/Program Files/php/" LoadModule ...

    Zend Framework 2 Application Development

    Whether you are learning Zend framework from scratch or looking to sharpen up your skills from previous versions, Zend Framework 2 Application Development will help you to harness the power of Zend ...

    基于Zend Framework 框架的CMS PHP 源代码

    总结,基于Zend Framework的CMS PHP源代码为我们提供了一个学习和实践PHP开发的实例。通过深入研究和实践,不仅可以提升对PHP和框架的理解,还能锻炼实际的项目开发能力。在探索过程中,不断学习和积累,将使你在Web...

    ZendFramework 1.12.9 代码和文档.rar

    **一、Zend Framework简介** Zend Framework(简称ZF)是一款开源、基于PHP语言的企业级Web应用程序开发框架。它遵循MVC(Model-View-Controller)设计模式,为开发者提供了一整套强大的工具和服务,旨在提高开发...

    Zend Framework 2 官方教程汉化版

    Zend Framework 2 官方教程汉化版

    ZendFramework入门实例源码

    本实例源码提供了对 Zend Framework 的基础认识和实际操作经验,包括入门级的项目搭建和数据库操作。 **1. Zend Framework 概述** Zend Framework 提供了一套完整的开发工具和库,支持各种Web服务,如RESTful API、...

    zend framework 1.7.5 使用基本例子

    在本教程中,我们将探讨如何使用Zend Studio 6这一强大的集成开发环境(IDE)来开发基于Zend Framework 1.7.5的应用。 首先,让我们了解如何安装和设置Zend Framework。在开始任何项目之前,你需要下载并解压Zend ...

    PHP zend framework 教程 很好

    PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好...

    Zend Framework 中文 手册 入门教程

    Zend Framework 中文 手册 2008年12月01日.chm MD5: DD29C39D12E9C0B38FD3475A12D05B73 SHA1: 1A6BBBF9311013F2FF2BF97752332160ED767526 CRC32: 88210ABD Zend Framework 入门教程(简体中文1.52版)v0.12.pdf MD5:...

    ZendFramework最新版本

    Zend Framework 是一个广泛使用的开源 PHP 框架,专为构建高效、可扩展且易于维护的 Web 应用程序而设计。这个“最新版本”指的是 Zend Framework 的 1.11.10 版本,它包含了 MVC(Model-View-Controller)架构模式...

    PHP 5.2 标准课程中级Zend Framework安装实例

    PHP 5.2 标准课程中级Zend Framework安装实例

Global site tag (gtag.js) - Google Analytics