一、框架介绍

PHP框架真正的发展是从php5开始的,在php5中对对象模型的修改对框架的发展起了很大的作用。

PHP框架就是通过提供一个开发web程序的基本架构,把基于web开发的PHP程序摆到流水线上。

换句话说,php开发框架有助于促进快速软件开发,节约了开发时间,减少了代码的重复编写。

 

什么是框架

框架(framework)其实就是开发一个系统的半成品,是在一个给定的问题领域内,实现一个应用程序的一部分设计,简单的说就是项目骨架已经搭好并提供了丰富的组建库,只增加了一些内容或者调用一些提供好的组件就可以完成自己的系统。 我们可以把框架的项目部署理解为一个建筑的地基以及环境的搭建,组建库理解为各种建筑材料,我们只需要“装修”一番,就可以将其变成办公楼,住宅楼,商业街....(个人主页、OA系统、电子商城....)

 

为什么要用框架

框架最大的好处就是重用。因为web发展到今天已经很复杂了,特别是服务器软件,涉及到的知识、内容和问题已经很多了,在项目开发过程中如果如果使用一个成熟的框架,就相当于让别人帮你完成了一些基础工作(50%以上),我们只需要集中精力完成系统的业务逻辑设计。而且框架一般都是成熟稳健的,可以处理系统的很多细节问题,比如事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构、扩展都很好,而且是不断升级的,你可以直接享受别人升级代码带来的好处。框架也将问题划分开了各个解决,易于控制,易于延展,易于分配资源。应用框架强调的是软件的设计重用性和系统的可扩展性,以缩短大型软件应用系统的开发周期,提高开发质量。

 

框架和MVC

框架是软件,而设计模式是软件的知识,一个框架往往含有一个或者多个设计模式,现在几乎所有流行的PHP框架都能实现MVC设计模式,将开发程序强制拆分成视图、控制器和模型三层,所以,使用框架后,就不用纠结去如何实现MVC了。如果不用框架去实现MVC,不仅MVC不易于理解,分离的难度也比较高。

M- Model 模型 负责数据操作

V-View 视图、模版 负责前台页面显示

C-Controller 模块 描述功能,调度M和V

一个框架不仅要具备MVC。还要具备以下一些功能

目录组织结构

可以自动部署项目所需的全部目录结构,或按框架的规则要求,创建项目的目录结构

类加载

框架中所有开发中用到的功能类,都可以自动加载。包括系统中提供的强大的基类库,以及用户自定义的功能类

基础类

每个成熟的框架都为用户提供了非常丰富的基类,让程序员在自定义方法中直接就可以从基类中继承来大量的功能

URL处理

框架中几乎都需要URL处理方式。对URL的管理包括两个方面。首先当用户请求约定的URL时,应用程序需要解析它变成可以理解的参数。第二,应用程序需要提供一种创造URL的方法,以便创建的URL应用程序是可以理解的。

输入处理

用户的一些输入通常都在URL参数中,或者通过表单提交。为了防止一些不合理的数据和输入攻击,框架中可以完成对输入内容进行过滤以及自动完成一些数据验证工作。

错误异常处理 在使用框架开发系统时,框架会提供一些配套的错误处理方式和程序调试模式,方便程序员快速解决开发中遇到的问题

扩展类 在框架中除了提供一些丰富的基类,还会提供一些常用的功能扩展类,包括web项目中一些常见功能,像分页程序,上传类等,也会提供用户自定义扩展类的接口。

模版引擎

ThinkPHP

好处

免费的,代码开源

单入口+模板引擎(thinktemplate xml)+MVC的一种的开发模式;

智能url路由

目录是自动创建

ajax+数据操作、表单验证等等都很智能。自动验证 自动完成 自动映射

框架下载(www.thinkphp.cn)

完整版 涉及到一些插件 工具 类库

核心版 只要TP框架运行起来就行

配置域名:

 

项目目录

核心文件介绍

 

ndex.php 项目入口文件

定义项目路径 define('APP_PATH', __DIR__ . '/../application/'); // 注意此处后面必须加斜线

加载框架入口文件 //注意 一定要严格区分大小写,防止项目迁移

require __DIR__ . '/../thinkphp/start.php'; //注意是requeire 而不适用include 因为这个核心文件如果引入出错,那么整个项目就没必要运行了

项目文件介绍

注意: 文件目录命名规范

a 模块目录全部采用小写和下划线命名。

b 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;

c类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名; 

d 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

函数和类、属性命名

属性、方法的命名使用驼峰法(首字母小写)getUser

函数的命名小写+下划线命名

 

MVC对应的项目文件夹

M ---- ./Application/index/model

V ---- ./Application/index/view

C ---- ./Application/index/controller

在命令行界面以管理员身份打开快捷创建新模块 php think build --config build.php

 

ThinkPHP运用

URL

普通模式 url_route_on设置为false时只支持pathinfo模式

http://serverName/index.php/module/controller/action/param/value/...

混合模式 开启路由,并使用路由定义+默认PATH_INFO方式的混合

'url_route_on' => true, 'url_route_must'=> false,

强制模式 'url_route_on' => true, 'url_route_must' => true,

httpd.conf中开启rewrite

找到http.conf中的 <directory E:/www>

设置AllowOverride None的值为 All 到项目入口文件同级目录,写入.htaccess重写规则文件

<IfModule mod_rewrite.c>

Options +FollowSymlinks

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

<IfModule>

 

TP:跳转方法 提示性信息页面模版

ThinkPHP/tpl/dispatch_jump.tpl $this->success(提示性信息,[模块名/]控制器名/方法名);

$this->error(提示性信息); 也可以自定义跳转模板,

在config.Php文件中添加如下配置项: 'dispatch_error_tmpl' =>'public/error'; 'dispatch_success_tmpl' =>'public/success';

页面重定向 当程序在一个方法里面想跳转另一个方法时候,需要传递数据过去! $this->redirect([模块名/]控制器名/方法名,['id'=>2]);

 

posted on 2017-11-03 12:56  顾君临  阅读(95)  评论(0)    收藏  举报