zoukankan      html  css  js  c++  java
  • ThinkPHP学习手记——环境搭建

    怀着激动的心情打开了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/

     

     

  • 相关阅读:
    GO语言系列- 结构体和接口
    GO语言系列- 高级数据类型之数组、切片、map
    tomcat8开启APR模式
    python中的subprocess.Popen()使用详解---以及注意的问题(死锁)
    linux dig 命令使用
    究竟什么时候该使用MQ?
    Python 列表(List) 的三种遍历(序号和值)方法
    python函数里引用全局变量
    python(xlsxwriter模块使用)
    Linux下生成patch和打patch
  • 原文地址:https://www.cnblogs.com/joyceX/p/4060200.html
Copyright © 2011-2022 走看看