怀着激动的心情打开了thinkPHP的文档,开启了第一次php框架学习。

下载

ThinkPHP最新版本可以在官方网站(http://thinkphp.cn/down/framework.html)

或者Github(https://github.com/liu21st/thinkphp/downloads)下载。
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以)

建议下载完整版,这可以再配置期间免去很多莫名其妙的麻烦

入口文件

下面附上官网的内容

在开始之前,你需要一个Web服务器和PHP运行环境,如果你暂时还没有,我们推荐使用集成开发环境WAMPServer(是一个集成了Apache、PHP和MySQL的开发套件,而且支持多个PHP版本、MySQL版本和Apache版本的切换)来使用ThinkPHP进行本地开发和测试。
接下来我们先在WEB根目录下面创建一个app子目录(这个app就是我们的项目名),然后在该目录下面创建一个index.php文件,添加一行简单的代码:

require '/ThinkPHP框架所在目录/ThinkPHP.php';

其实这个index.php无需自己创建,在下载包中已经是有的了。

单一项目

我们就可以直接通过http://localhost/访问项目了。

多项目

如果想创建多个项目,你也可以在Web根目录下面创建多个子目录来部署多个项目。每个项目目录里包含一个入口文件。

创建project1文件夹

创建并打开入口文件(index.php)

加入如下代码

<?php

define('APP_DEBUG',true); //开启调试模式

require('../ThinkPHP/ThinkPHP.php');

?>

在浏览器打开 http://localhost/project1/,便可以看到thinkphp的欢迎页面了。

ThinkPHP运行流程

浏览器访问 入口文件的时候 时,发生了什么?think的执行流程是怎么样的?

(1)第一步:引入框架下的 thinkphp.php

thinkphp.php文件,定义了常量app_name和think_path(大写),并引入runtime.php

(2)第二步,加载框架下的 Common/runtime.php文件

  • 再次定义了一些常量,具体见源码;
  • 创建项目目录结构,由build_app_dir()方法创建;
  • 如果app_dubug设置为false,则把核心加载文件进行编译。否则,删除编译文件,即项目下的~runtime.php文件;
  • 调用框架ThinkPHP下的 lib/core/Think.class.php 文件——>执行入口 Think::Start()。

(3)第三步,执行框架ThinkPHP下的 lib/core/Think.class.php 的start()方法

  • 接第二步,开始执行入口文件Think::Start()。包括声明错误处理句柄、异常处理句柄,并声明类的自动加载机制;
  • Think::buildApp(); //初始化app运行,即项目预编译,加载项目的各种配置文件,大约有10个文件左右。
  • 加载完配置文件后,执行app::run

(4)第四步,执行框架下的 lib/core/App.class.php下的run方法

  • 执行app下init()静态方法:分析url,得出调用哪个控制器。
  • 执行app下exec静态方法:根据计算出来的模型和方法,实例化该module,并执行action相应的方法。本实例找到的项目下 lib/action目录下的 IndexAction.class.php,并执行index()方法。

 

经过了以上这么多的步骤,我们终于是看到了浏览器上显示的 thinkphp欢迎页面。

网站分享

官网:

http://www.thinkphp.cn/

API:

http://doc.thinkphp.cn/

论坛:

http://www.ithinkphp.com/

 

 

ThinkPHP学习手记——环境搭建的更多相关文章

  1. hive_学习_01_hive环境搭建(单机)

    一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...

  2. hbase_学习_01_HBase环境搭建(单机)

    一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...

  3. hadoop_学习_02_Hadoop环境搭建(单机)

    一.环境准备 1.说明 hadoop的下载来源有: 官方版本:http://archive.apache.org/dist/hadoop/ CDH版本:http://archive.cloudera. ...

  4. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  5. Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda

    Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...

  6. ubuntu 深度学习cuda环境搭建,docker-nvidia 2019-02

    ubuntu 深度学习cuda环境搭建 ubuntu系统版本 18.04 查看GPU型号(NVS 315 性能很差,比没有强) 首先最好有ssh服务,以下操作都是远程ssh执行 lspci | gre ...

  7. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

  8. 001-深度学习Pytorch环境搭建(Anaconda , PyCharm导入)

    001-深度学习Pytorch环境搭建(Anaconda , PyCharm导入) 在开始搭建之前我们先说一下本次主要安装的东西有哪些. anaconda 3:第三方包管理软件. 这个玩意可以看作是一 ...

  9. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

随机推荐

  1. 一个IO的传奇一生 系列 存储之道

    http://alanwu.blog.51cto.com/3652632/1286553

  2. java.sql.SQLException: Lock wait timeout exceeded --转

    org.springframework.dao.CannotAcquireLockException 的解决> 直接上 bug 的详细信息: 2012-03-12 15:20:31 XmlBea ...

  3. Java基础知识强化之IO流笔记41:字符流缓冲流之复制文本文件案例02(使用 [ newLine() / readLine() ] )(重要)

    1. 使用字符流缓冲流的特殊功能 [ newLine() / readLine() ] 需求:把当前项目目录下的a.txt内容复制到当前项目目录下的b.txt中  数据源: a.txt -- 读取数据 ...

  4. c++静态成员与静态函数

    1 静态成员的定义 1 静态变量 c++在类里面进行的仅是引用性声明,不会为之分配内存,要求必须单独对静态数据成员进行定义性的声明.形式为: 类型 类名::静态数据成员名: 此时的定义需要再加关键字s ...

  5. Spring-data-redis操作redis cluster

    Redis 3.X版本引入了集群的新特性,为了保证所开发系统的高可用性项目组决定引用Redis的集群特性.对于Redis数据访问的支持,目前主要有二种方式:一.以直接调用jedis来实现:二.使用sp ...

  6. Redis操作List工具类封装,Java Redis List命令封装

    Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...

  7. dsoframer控件在64系统上使用问题小汇总

    由于工作中需要,我接触了dsoframer控件,我办公电脑是64系统,在使用时,总是报没有注册类错误.我很是奇怪,dsoframer.ocx控件我都注册过的呀.然后在网上查阅了许多相关资料.悲哀的是, ...

  8. union的用法

    union的用法 union用来连接两个查询语句,把两个查询语句的查询结果合并起来,两个查询语句的查询字段个数必须一样,否则会出错,查询的字段可以不一样,类型也可以不一样,但是这样查询的意义不大,如果 ...

  9. c中计时的几种方法

    C计时的几种方法说明及例程 1. 使用clock() 函数 头文件:<time.h> clock()函数,返回“自程序启动到调用该函数,CPU时钟的计时单元数(clock tick)” 每 ...

  10. java反射技术

    Class c2 = Class.forName("com.reflection.Test"); // 对类的寻找,找到一个类,注意不是对象 WifiManager mWifiMa ...