PHP 框架,第 2 部分: 构建样例应用程序

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

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

关于本系列

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

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

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

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

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


对 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 转载请注明

<?php

  /*****************************************

   Title :smarty结合xajax检测用户名简单实例
   Author:leehui1983(辉老大)
   Finish Date  :2006-12-09

  *****************************************/

  //为避免中文乱码,需要在 xajax.inc.php 需要改一下默认的encoding:define ('XAJAX_DEFAULT_CHAR_ENCODING', 'gbk' )UTF8编码格式文件不需要更改

  require_once('./libs/Smarty.class.php');//包含smarty类库
  require('./xajax/xajax.inc.php');//包含xajax类库

  function checkusername($textvalue){//编写需要的PHP函数
       $checkresult=($textvalue=='test' ? '<font color=red>该用户名已经注册</font>' :'<font color=red>可以注册</font>');
       $objresponse=new xajaxResponse();//实例化xajaxresponse对象
       $objresponse->addassign("result","innerHTML",$checkresult);//指定ID为result的元素中添加内容$checkresult
       return $objresponse;//返回结果文本
  }

  $xajax=new xajax();//实例化xajax对象
  $smarty=new Smarty();//实例化smarty对象
  $smarty->template_dir = "./templates";//设置模板目录
  $smarty->compile_dir = "./templates_c"; //设置编译目录
  $smarty->caching = false; //设置缓存方式
  /*****************************************************
  左右边界符,默认为{},但实际应用当中容易与JavaScript
  相冲突,所以建议设成<{}>或其它。
  *****************************************************/
  $smarty->left_delimiter = "<{";
  $smarty->right_delimiter = "}>";


  $xajax->registerFunction("checkusername");//注册checkusername函数
  $xajax->processRequests();//调用xajax用于接管请求
 
  $smarty->assign('xajax_javascript', $xajax->getJavascript('./xajax/'));//输出JS代码,注意('./xajax/')中参数为xajax.inc.php父目录,在同意目录下可不同填写,否则必须填写
  $smarty->assign('title','smarty结合xajax检测用户名简单实例');//替换模板内容
  $smarty->display('index.tpl');//显示模板内容
?>

 

<html>
<head>
<title><{$title}></title>
<{$xajax_javascript}><{*使smarty支持xajax*}>
</head>

<body>
<form  name="check" >
请输入用户名:
  <input type="text" name="username" />
  <input type="button" name="button" value="检查用户名"  />
  <div id="result"></div>
</form>
</body>
</html>

[!--infotagslink--]

相关文章