ThinkPHP

一.php框架基础介绍

真实项目开发步骤:

  1. 多人同时开发项目,协作开发项目、分工合理、效率有提高(代码风格不一样、分工不好)
  2. 测试阶段
  3. 上线运行
  4. 对项目进行维护、修改、升级(单个人维护项目,十分困难,代码风格不一样)
  5. 项目稳定的运行阶段
  6. 项目停止运行(旧项目的人员已经全部离职,新人开发新项目)

问题:

1. 多人开发项目,分工不合理,(html   php   mysql)

2. 代码风格不一样,后期维护十分困难

3. 项目生命周期十分短,项目生命没有延续性,造成资源浪费、人员浪费

4. 项目不能很好适应客户需求,牵一发而动全身。

其他相关框架

1. zendframework   zend php语言公司发布的官方框架,重量级(功能多)

2. yii   美国华人开发的框架,xue qiang, qiang,  重量级框架,纯OOP框架

3. CI  CodeIgniter轻量级框架,开发速度快,部署灵活

  1. cakephp外国框架,重量级,速度慢
  2. symfony外国重量级框架
  3. ThinkPHP轻量级框架,国人框架,入门容易

什么框架:

一堆代码的集合,里边有变量、函数、类、常量,里边也有许多设计模式MVC、AR数据库、单例等等。

框架可以节省我们50-60%的工作量,我们全部精力都集中在业务层次。

为什么使用框架

l   框架可以帮组我们快速、稳定、高效搭建程序系统

l  该系统由于框架的使用使得本身的维护性、灵活性、适应客户需求方面得到最大化的增强。

l  使用框架的过程中可以使得我们的注意力全部集中业务层面,而无需关心程序的底层架构。

ThinkPHP版本介绍

thinkphp.cn

thinkphp 3.2版本

1. 解压后thinkphp文件夹中的文件,入口文件换成 index.php

index.php-----是解压出来的第一个php文件,是一个项目的入口文件,也就是项目所有的页面都要走此页面

2. conf 配置文件夹

3. library 核心资源库中

4. library 核心资源库中核心文件 Think

ThinkPHP-----核心文件夹(里面的东西不要修改)

ThinkPHP包含着:
**Common----核心函数库(存放用户自定义的函数)
**Conf-----配置文件(主要存放在convention.php)
Home----
Lang----语言包
**Library-----核心资源库 (存放的是一些核心类:Library/Think下全部是类)
Mode----模型文件夹
Tpl-----模板

Application-----存放项目的文件夹,可以改的

public----存放一些公有的东西

框架项目部署

1. 打开index.php入口文件,将原来的Application改成JiaoWu(如下所示)

<?php
// 应用入口文件 // 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True); // 定义应用目录
define('APP_PATH','./JiaoWu/');//自己的文件名(在这里可以随便命名) // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php'; // 亲^_^ 后面不需要任何代码了 就是如此简单

2. 访问入口文件的同时系统会自动把对应的应用目录文件JiaoWu创建出来

3. 打开Home文件夹

MVC模式

MVC模式:
Model 模型 模型(数据)层
View 视图 视图层
Controller控制器 逻辑层

M: 操作数据(数据连接,数据访问)
V:提供显示模板
C:实现业务逻辑

MVC:约定胜于配置(约定非常的重要)

控制器访问及路由解析

通过url地址get参数找到指定的控制器,并进行对应方法调用请求

http://网址/index.php?m=模块名称&c=控制器&a=方法

以上url地址信息代码不够优雅、不安全。

action:操作,放在控制器里面的方法

之前的访问方式:访问具体的页面

访问的方式:访问控制器下的操作(某个方法),不是一个具体的页面

1.MVC的4种访问方法

1.找到入口文件index.php

2.再找到模块名,控制器,方法名(操作)

以下是Home模块中的LoginController.class.php利用4种方法对其访问

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller
{
public function index()
{
echo "login---登录";
} }

1.  http://网址/index.php?m=XX&c=XX&a=XX   基本get模式

写法:localhost:8080/tp/index.php/?m=Home&c=Login&a=index

2.http://网址/index.php/模块/控制器/操作方法路径模式pathinfo(推荐使用)

写法:locahost:8080/tp/index.php/Home/Login/index

3.http://网址/模块/控制器/操作方法           rewrite重写模式

写法:http://localhost:8080/tp/Home/Login/index(自己没有实现)

4.http://网址/index.php?s=/模块/控制器/方法兼容模式

写法:http://localhost:8080/tp/index.php/?s=Home/Login/index(4的写法)

   http://localhost:8080/tp/?s=Home/Login/index(虽然也可以不知道为啥)

1.具体url地址模式设置(配置文件ThinkPHP/Conf/convertion.php)

URL_MODEL  =  0/1/2/3  分别代表四种url地址模式

下图Shop改为JiaoWu

config.php是我们当前自己项目的配置文件,我们可以通过修改该文件达到配置变量的目录

这个文件在系统运行过程中会覆盖convertion.php的配置变量

include “convertion.php”;

include “config.php”;  后引入的文件要把先引入的文件配置变量给覆盖掉

换句话说:也就是修改配置是在JiaoWu/Home/config.php中而不是在核心资源库convertion.php

我们系统有兼容4中url地址模式的使用

系统有的时候会自动创建url地址,它会根据当前模式进行url地址创建使用

快捷函数U();  创建url地址

修改配置:

特别注意:这里的控制模式不是来控制访问的,是来控制生成的

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function Login()
{
//echo "你好";
//echo U("Home/Index/Login");
//echo U("Index/Login");
echo U("Login");//输出同样
//利用U()快捷方法创建路径的三种方式
}
}

注意: 如果是在当前模块的当前控制器下,可以只写方法
      如果是在当前模块的其他控制器下,要写上控制器和方法
      如果是在其他模块下,模块、控制器、方法名(操作)都要写

修改配置参数:

'URL_MODEL'             =>  1,   (最常用)

输出结果:/tp/index.php/home/index/login.html

'URL_MODEL'             =>  0,

输出结果:/tp/index.php?m=home&c=index&a=login

'URL_MODEL'             =>  2,

输出结果:/tp/home/index/login.html

'URL_MODEL'             =>  3,

输出结果:/tp/index.php?s=/home/index/login.html

开发、生产模式

开发调试模式:系统需要加载大概24个文件  index.php  define(“APP_DEBUG”,true);

生产模式:系统只需要加载很少的大概7个文件在入口文件

index.php中定义: define(“APP_DEBUG”,false);

节省了许多文件的开发、关闭的系统开销,节省资源

要在页面显示trace信息,需要在自己的配置文件中:

define('APP_DEBUG',True);   为true时:

define('APP_DEBUG',False);    为false时:

而且还会出现

控制器和对应方法创建

控制器是MVC模式中的核心,tp默认有一个Index控制器:

如果要自己创建一个控制器Login:

  1. 在\JiaoWu\Home\Controller文件夹下新建一个控制器文件LoginController.class.php

注意:文件命名规则,按照驼峰法命名

在IndexController.class.php中

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$this->display();
} }

在view下一级index.html中

<html>
<meta charset="utf-8" />
<head></head>
<body>
<h1>主页面</h1>
</body>
</html>

此时出现的页面时:

原因:上面两者不是相互对应的,模板文件没有创建正确,这时候我们就要去创建模板文件

如何正确创建模版:

如果我们想要访问index控制器中的index方法,首先我们要创建一个index控制器对应的模板文件夹,该文件夹就对应着index控制器:

换句话说也就是在View目录下新建目录Index目录然后再在里面新建index.html文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<h1>这是一个主页面(与IndexController.class.php对应)</h1>
</body>
</html>

显示效果为:

6月13 ThinkPHP框架基础的更多相关文章

  1. ThinkPHP框架基础

    ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...

  2. ThinkPHP框架基础知识一

    ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来 ...

  3. ThinkPHP框架基础3

    连接数据库 把convertion.php数据库相关的设置复制到config.php 在config.php做数据库连接配置,设置好数据 制作model模型 a)        model本身就是一个 ...

  4. ThinkPHP框架基础知识二

    一.空操作和空控制器处理 空操作:没有指定的操作方法:空控制器:没有指定控制器,例如: http://网址/index.php/Home/Main/login  正常 http://网址/index. ...

  5. Thinkphp 框架基础

    ThinkPHP 一.php框架介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项 ...

  6. ThinkPHP框架基础知识三

    一.JS文件与Css文件存放位置 其实JS与Css文件放在任意位置都可以找到,只要路径正确就行. 在TP框架中我们访问的所有文件都要走入口文件index.php,相当于访问的是index.php页面. ...

  7. ThinkPHP框架 基础 链接数据库

    在第一次成功访问应用入口文件的时候,会显示出一个系统默认的欢迎页面并自动在APPLication文件夹里生成三个文件夹,如下,第一次访问应用文件路径:localhost/tr/index.php   ...

  8. 6月13 ThinkPHP控制器

    控制器 控制器是MVC模式中的核心,tp默认有一个Index控制器: 1.控制器的命名规则:新建一个主页面的控制器 在JiaoWu/Home/Controller下新建一个文件:MainControl ...

  9. ThinkPHP框架的一些基础应用

    这是俺滴师傅给俺传授了的知识,特在此分享. TP框架,做PHP开发的都应该有所耳闻.下面,我们就来说说入口文件的生成: 创建新项目时,首先,在目录文件下创建一个新的文件夹.然后将Thinkphp框架文 ...

随机推荐

  1. DataTabel 与DataView之间的转化

    DataTable转为DataView,或者反之转化, 使用的是文档/试图模型,DataTable可以有多个视图,这样就可以不需要借助List类型对dataTable数据进行筛选或者排序 //Data ...

  2. (zhuan) LSTM Neural Network for Time Series Prediction

    LSTM Neural Network for Time Series Prediction Wed 21st Dec 2016 Neural Networks these days are the ...

  3. Bytom移动端钱包SDK开发基础

    比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom Byto ...

  4. jvm 内存溢出问题排查方法

    如果你做TCP通讯或者map集合操作,并发处理等功能时,很容易出现 Java 内存溢出的问题.本篇文章,带领大家深入jvm,分析并找出jvm内存溢出的代码. jvm中除了程序计数器,其他的区域都有可能 ...

  5. 草珊瑚的redux使用方式

    前言 阮大师写入门教程能力一流. 首推它的Redux三篇入门文章. http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_bas ...

  6. Python 基础 Python是什么

    1.Python 是一门高级的.面向对象的,解释性,脚本语言.

  7. File操作-将txt里的内容写入到数据库表

    package com.Cristin.File;//将txt里的内容写入到数据库表 import com.Cristin.MySQL.AddDataToDB;import org.testng.an ...

  8. P4574 [CQOI2013]二进制A+B

    传送门 思路: 本题可用数位DP来做,设 f [ i ][ a ][ b ][ c ][ j ] 表示当前枚举到(二进制下的)第i位,a' b' c'各用a,b,c了几个1,j表示最后一位是否有进位. ...

  9. python+win32+ie浏览器操作 TypeError: getElementById() takes exactly 1 argument (2 given)

    使用body操作 # -*- coding:UTF- -*- import win32com.client from time import sleep second=win32com.client. ...

  10. 有了art-template,如有神助

    <div class="form-group col-lg-12"> <label class="control-label col-lg-3 text ...