ThinkPHP框架介绍及应用

一.ThinkPHP介绍

1.1.什么是框架

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

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

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

1.3.使用框架的好处

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

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

<?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

<?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

<?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

<?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文件本身的图片路径设置正确

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值