PHP 框架,第 1 部分: 开始使用三种常用框架

 更新时间:2016年11月25日 16:06  点击:1299
短短数年前,对 PHP 最常见批评之一是不支持 MVC 样式的架构。随着时代的变迁,现在在 PHP 框架领域里可以获得多种选择。本系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。

“PHP 框架” 系列专门针对那些想要开始使用框架、但又没有机会详细检验可用框架的 PHP 开发人员。在学完本系列后,您将了解选择这三个框架的原因、如何安装每个框架,并且充分运用将在三个框架中扩展的测试应用程序。听起来要学习的内容很多,但是不必担心。内容虽然多,但是我们已经把内容细分为多个便于管理的部分。

关于本系列

本系列的第 1 部分将列出本系列涵盖的内容,介绍将进行考察的框架以及说明如何安装,并查看将构建的第一个测试应用程序。

第 2 部分将指导您在三个框架中构建样例应用程序,着重说明了它们的类似之处和不同之处。

第 3 部分从扩展测试应用程序开始,然后处理不符合一般规律的例外情况。所有框架都能很好地完成份内的任务。每个项目中都需要完成一些框架设定工作之外的事情。第 2 部分就将介绍那些情况。

第 4 部分主要介绍了 Ajax 支持。使用本机代码和第三方库检验了 Ajax 的使用 —— 特别介绍了每个框架如何运行及接受具体的常用库。

第 5 部分将处理如何在框架外部工作。设定一项任务(每晚更新脚本),并在每个框架中检验完成此项任务的过程。


MVC模式的view层的主要任务是进行页面的和结果的显示工作,在php的实现过程中,主要是体现为一个模板(使用模板,可以达到php代码和html代码分离的目的,这样代码和页面的维护就方便多了,便于管理和页面的更换,可以真正的划分程序员、美工的分工)的解析过程:
首先,controler层从model层得到数据
其次,controler层将数据交给view层
再次,view层的接口将数据按一定的方式传给模板解析类,
最后,模板解析类将数据解析到模板中,然后显示。


下面是一个具体的实现例子
目录结构

|- ClassRenderTest.php          //测试解析classlist.html
|- StudentRenderTest.php        //测试解析studentlist.html
|- render / TemplateParser.php  //模板解析类
|- render / Render.php          //解析模板的所有类的基础类
|- render / StudentRender.php   //解析模板studentlist.html的类
|- render / ClassRender.php     //解析模板classlist.html的类
|- template / studentlist.html  //模板文件
|- template / classlist.html    //模板文件

注意:
1、这里模板解析类选用了简单的“TemplateParser.php”,根据个人的需要你可以选用任何一种模板解析类;
2、如果每个模板解析都直接调用“TemplateParser.php”,可能会有大量的重复代码出现,这是oo思想所不准许出现的。因此采用“Render.php”对它进行包装,然后再对“Render.php”里面的Render类进行扩展,来对不同文件模板进行解析;
3、不同的模板解析类的,使用的方法是不同的,他们的包装方式也可能不同。
4、“StudentRender.php”“ClassRender.php”就是包装过的Render类,分别用来满足解析“studentlist.html”“classlist.html”的需要。


文件1:classlist.html

current time is : _now_  <BR><BR>
current school class list :
<TABLE border=1>
    <TR>
     <TH>ID</TH>
        <TH>NAME</TH>
        <TH>GRADE</TH>
        <TH>CLASS</TH>
    </TR>
 BEGIN_classlist_
 <TR>
     <TD>_cid_</TD>
        <TD>_cname_</TD>
        <TD>_grade_</TD>
  &nb
<
“PHP 框架” 系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序,研究三个框架的类似之处和不同之处。第 1 部分将列出本系列涵盖的内容并且配置先决条件。在第 2 部分中,您将分别在三个框架中构建样例应用程序。

在本系列的 第 1 部分 中,我们已经设定了本系列的范围并满足了先决条件。现在,将分别在三个框架中构建样例应用程序。在接下来的几篇文章里,将扩展应用程序、了解不符合常规的例外情况、使用 Ajax、集成外部任务等等。

本文将指导您分别在三个框架中创建样例应用程序 Blahg。您将从头做起,了解在 Zend 框架、symfony 和 CakePHP 中开发简单应用程序的基础知识。

您应当已经完成了 第 1 部分,该部分介绍了如何安装这三个框架及使用三个框架必须满足的先决条件。如果您还未读过这一部分,则应立即阅读。

假定您已经了解 PHP、应用程序设计以及如何在数据库中工作。您不需要具有框架使用经验,但是您应当已经准备好开始使用框架。

在 Zend 框架中构建 Blahg

首先,创建目录 /column/htdocs/zend 和 /column/protected/zend。这些目录将分别保存 Web 可访问的文件及 Web 不能访问的应用程序文件。在 /column/htdocs/zend 中,用以下命令行创建一个 .htaccess 文件:

RewriteEngine onRewriteRule !.(js|ico|gif|jpg|png|css)$ index.php

在涉及目录结构时,每个框架都有自己特定的要求。对于 Zend 框架,需要创建目录 /column/protected/zend/controllers、/column/protected/zend/models 和 /column/protected/zend/views 来保存控制器、模型和视图。此外,需要创建目录 /column/protected/zend/views/scripts;并且对于每个控制器,需要创建一个目录来保存一些视图。例如,您知道 Blahg 将需要为 post 控制器提供一些视图,那么就需要创建目录 /column/protected/zend/views/scripts/post 来保存该视图。

已经准备好目录。该来构建模型了。

构建 Zend posts 表和模型

在第 1 部分中,创建了将要使用的 posts 表。如果您跳过了那段内容,请立即查看并且创建该表。该表的模型非常简单。它应当被命名为 Posts.php,并且应当在 /column/protected/zend/models/ 创建它。Posts.php 将扩展 Zend_Db_Table 类,并且您将使用的大多数方法均继承自该类。

<
对 PHP 早期版本的常见批评是不支持模型-视图-控制器(Model-View-Controller,MVC)样式的架构。现在,开发人员可以在许多 PHP 框架中做出选择。“PHP 框架” 系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。第 1 部分列出了本系列涵盖的内容并且配置先决条件。在第 2 部分中,您分别在三个框架中构建了样例应用程序。本文是第 3 部分,您将扩展应用程序并处理不符合一般规律的例外情况。

关于本系列

本系列专门针对那些想要开始使用框架、但又没有机会详细检验可用框架的 PHP 开发人员。在学完本系列后,您将了解选择这三个框架的原因、如何安装每个框架,并且充分运用将在三个框架中扩展的测试应用程序。听起来要学习的内容很多,但是不必担心。内容虽然多,但是我们已经把内容细分为多个便于管理的部分。

本系列的 第 1 部分 将列出本系列涵盖的内容,介绍将进行考察的框架以及说明如何安装,并查看将构建的第一个测试应用程序。

第 2 部分 将指导您在三个框架中构建样例应用程序,着重说明了它们的类似之处和不同之处。

第 3 部分从扩展测试应用程序开始,然后处理不符合一般规律的例外情况。所有框架都能很好地完成份内的任务。每个项目中都需要完成一些框架设定工作之外的事情。本文就将介绍那些情况。

第 4 部分主要介绍了 Ajax 支持。使用本机代码和第三方库检验了 Ajax 的使用 —— 特别介绍了每个框架如何运行及接受具体的常用库。

第 5 部分将处理如何在框架外部工作。设定一项任务(每晚更新脚本),并在每个框架中检验完成此项任务的过程。



<

 php fck文章分页 fckeditor文章分页代码

<?php   
   $page =isset($_GET['page'])?$_GET['page']:1;//这里了得当前文章的分页编号如果没有就为1
 $split ='<div style="page-break-after: always"><span style="display: none">&nbsp;</span></div>';

//这里是fckeditor文章的分页代码


 $array =explode($split,$rs->new_content);


 if($page>sizeof($array) ){//判断从地址栏获得的分页编号是不是大于总分页的长度,如果是就输出第一页的内容
  echo $array[0];
 }else{
  echo $array[$page-1];//不是就输出$page-1这里因为php函数的下标是从0开始的
 }
 if(sizeof($array)>1){ //这里是判断如果文章没有分页就不显示第N页,
  for($i=1;$i<=sizeof($array);$i++){
   echo "<a href=?id=$type_id&page=".$i.">[".$i."页]</a>&nbsp;";
  }
 }
 
  ?>

原创文章:www.111cn.net 转载请注明

[!--infotagslink--]

相关文章

  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • 基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍

    这篇文章主要介绍了基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 的相关资料,需要的朋友可以参考下...2016-05-14
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • 使用jquery修改表单的提交地址基本思路

    基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • CI框架开发新浪微博登录接口源码完整版

    首先来看下流程:流程原理: 1.通过code获得access_token通过授权,并获取用户的信息(包括用户u_id)(这个u_id在后面的第三方登录表里面叫sina_id,那个表是需要自己建的) 2.查询第三方登录表,如果不存在用户sina_id,分2...2014-05-31
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22