一.ThinkPHP介绍

1.1.什么是框架

PHP框架是许多代码的集合,这些代码是程序结构的代码(并不是业务代码),代码中有许多函数、类、功能类包,框架的代码按照一定标准组成了一个有机的功能体,这个功能体中有许多设计模式如MVC、单例、AR等。

1.2.不使用框架开发中遇到的问题

代码编写没有统一规范程序项目生命周期非常短,不延续一个小地方的修改会牵扯到全局变化,牵一发动全身不能很好地满足客户各方面的需求

1.3.使用框架的好处

框架可以帮助我们快速、稳定、高效搭建程序系统该系统由于框架的使用使得其维护性、灵活性、适应客户需求方面得到最大化的增强使用框架的过程中可以使我们的精力集中在业务层面,而无需关心程序的底层架构可以节省很多代码工作量

1.4.相关框架

1.4.1. zendframework

php语言公司zend发布的官方框架,有许多OOP面向对象内容,功能非常丰富,重量级框架(高级语言、功能丰富)

重量级:(1)语言级别(高级语言OOP)(2)功能丰富

轻量级:(2)语言级别(面向过程或有少许OOP)(2)功能相对较少但实用

高级语言:如java,函数对中低级语言代码的封住

中级语言:如c,是用变量,函数对中低语言代码的封住

(中低级语言):如汇编语言,比低级语言高级一点的语言,是对二进制代码的封住

低级语言:二进制代码语言

1.4.2.Yii

国人自己开发的框架,重量级框架,纯OOP框架,该框架的特点是把代码的重用性发挥到了极致。速度非常快。外企使用最多的框架之一。

该框架思想来源于symfony、jquery等。

作者之前是prado框架的核心维护人员,维护该框架3年之久。

1.4.3.cakephp

cakephp是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。该框架的主要目标是让各种层次的PHP开发人员能快速灵活的开发健壮的Web应用。

1.4.4.symfony

symfony是基于MVC模式的面向对象的PHP5框架

1.4.5.ThinkPHP

轻量级框架,内部OOP和面向过程代码都存在,是国人自己开发的框架。

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注业务逻辑。

1.5.框架文件介绍

解压 ThinkPHP,打开它或导入到项目中去,展开六个文件及文件夹:

Application --应用程序目录,当程序开发时自动生成,默认为空;

Public --公共资源文件目录,存放一些公用的文件,默认为空;

ThinkPHP --框架目录,框架的核心架构程序包;

README.md --说明文件,可删;

.htaccess --配置文件,一般用于配置伪静态;

Index.php --入口文件,所有程序都通过这里访问。

对于 ThinkPHP 框架目录内,也含有大量的目录及文件:

Common --核心公共函数目录

Conf --核心配置目录

Lang --核心语言包目录

Library --框架类库目录

|--Think --核心 Think 类库包目录

|--Behavior --行为类库目录

|--Org --Org 类库包目录

|--Vendor --第三方类库目录

|--... --更多类库目录

Mode --框架应用模式目录

Tpl --系统模版目录

LICENSE.txt --框架授权协议文件

logo.png --框架 LOGO 文件

README.txt --框架 README 文件

index.php --框架入口文件

ThinkPHP3.2.3完整版

Library文件目录

Think文件目录

二.ThinkPHP应用

新建一个shop文件目录,同级目录下拷贝ThinkPHP文件;创建一个主文件index.php。

index.php

//使用thinkphp框架开发shop商城

//引入框架的接口文件

include ("../ThinkPHP/ThinkPHP.php");

运行该文件,出现欢迎使用页面,说明使用ThinkPHP成功。

应用第一次访问时,会自动创建一下三个文件目录:

三.路由形式

路由就是系统从URL参数中分析出当前请求的分组、控制器和操作的过程。

tp框架路由有4种形式:

(1)基本get路径形式

http://网址/index.php?m=分组&c=控制器&a=操作方法

该方法是最底层的get形式、传统的参数传递方式,不时尚、不安全。

(2)pathinfo路径形式[默认方式]

http://网址/index.php/分组/控制器/操作方法

http://网址/index.php/Home/Index/advert

(3)rewrite重写形式(伪静态技术)省略index.php入口文件

http://网址/分组/控制器/操作方法

http://网址/Home/Index/advert

(4)兼容模式

http://网址/index.php?s=/分组/控制器/操作方法

四.创建控制器

UserController.class.php

//命名空间

namespace Home\Controller;

use Think\Controller;

//前台用户控制器

class UserController extends Controller{

//登录功能

function login(){

echo "登录";

}

//注册功能

function register(){

echo "注册";

}

}

五.view视图模板

5.1. 简单模板view调用

\$this -> display(); //模板名称与当前控制器、当前操作方法的名称一致

\$this -> display(模板名称); //调用当前控制器对应目录指定名称的模板

\$this -> display(控制器/模板名称); //调用其他控制器下的具体模板文件

tp框架两种模式:[默认]生产(线上)、开发(调试)

define("APP_DEBUG",true);//开发(错误提示)

define("APP_DEBUG",false);//生产

入口程序inde.php

header("content-type:text/html;charset:utf-8");

//使用thinkphp框架开发shop商城

//框架两种模式:[默认]生产(线上)、开发(调试)

define("APP_DEBUG",true);//开发(错误提示)

//define("APP_DEBUG",false);//生产

//引入框架的接口文件

include ("../ThinkPHP/ThinkPHP.php");

UserController.class.php

//命名空间

namespace Home\Controller;

use Think\Controller;

//前台用户控制器

class UserController extends Controller{

//登录功能

function login(){

//echo "登录";

//调用view视图

$this -> display(); //展示视图(视图文件名和当前操作方法名一致)

$this -> display('register'); //访问其他的模板文件

$this -> display("Goods/detail"); //访问其他控制器下的具体模板文件

}

//注册功能

function register(){

//echo "注册";

$this -> display(); //展示视图(视图文件名和当前操作方法名一致)

}

}

在地址栏输入

http://localhost/php_test/shop_test/shop/index.php/Home/User/login

出现错误提示

模板不存在:/Applications/MAMP/htdocs/php_test/shop_test/shop/Home/View/User/login.html

根据错误提示创建对应的模板文件

在view下创建User文件夹,在User文件夹下创建login.html和register.html模板文件。

在view下创建Goods文件夹,在Goods文件夹下创建detail.html模板文件。

控制器和模板的关系

通常每个控制标志在view目录都会有一个对应控制器标志的目录,里面有具体的模板文件。

例如:GoodsController.class.php控制在view目录有Goods目录,里面都是Goods控制器对应的模板文件。

5.2视图模板与tp框架结合

模板与tp框架结合

1.引入静态代码

2.引入css、image、js

a)以上3种,浏览器需要发送单独的http请求

b)引入css时,以User控制器标志作为当前目录,显然不行,通常利用常量把路径给定义好,后期只需维护一个常量即可。

//定义css、img、js常量路径

define("SITE_URL","http://localhost/php_test/");

define("CSS_URL",SITE_URL."shop/public/css/");

define("IMG_URL",SITE_URL."shop/public/img/");

define("JS_URL",SITE_URL."shop/public/js/");

c)在模板中通过常量获得具体的css、img、js等文件信息

3.把css文件本身的图片路径设置正确

Copyright © 2088 欧洲世界杯预选赛_赛程世界杯 - tvzfj.com All Rights Reserved.
友情链接