thinkphp 学习_单一入口执行流程

(1)thinkphp 是一个 基于mvc开发和单一入口框架

其中index.php 是是一个web网站访问的入口文件:

//部署单一入口文件
define(‘APP_PATH‘,‘./apps/‘);

require ‘./ThinkPHP/ThinkPHP.php‘;

浏览器访问的时候index.php时候,会自动生成apps项目文件;看了下,官方文档不建议在入口文件中做过多的操作,但可以重新定义一些系统常量;也即是修改一些系统配置例如

// 定义应用目录
define(‘APP_PATH‘,‘./Apps/‘);
// 定义运行时目录
define(‘RUNTIME_PATH‘,‘./Runtime/‘);
// 开启调试模式
define(‘APP_DEBUG‘,True);
// 更名框架目录名称,并载入框架入口文件
require ‘./ThinkPHP/ThinkPHP.php‘;

ps 如果想配置多个网站,则可以配置多个累世index.php 文件 ,在其文件 define("app_path",‘./amdin/‘);

那么自动生成的apps的项目结构如下:

Apps
  ├─Common         应用公共模块
  │├─Common      应用公共函数目录
  │└─Conf        应用公共配置文件目录
  ├─Home           默认生成的Home模块
  │  ├─Conf        模块配置文件目录
  │  ├─Common      模块函数公共目录
  │  ├─Controller  模块控制器目录
  │  ├─Model       模块模型目录
  │  └─View        模块视图文件目录
  ├─Runtime        运行时目录
  │  ├─Cache       模版缓存目录
  │  ├─Data        数据目录
  │  ├─Logs        日志目录
  │  └─Temp        缓存目录

 runtime 主要是缓存一些数据使用,例如系统配置文件,(会将配置文件缓存起来,如果配置文件时是自定义的话,则不会缓存自定义的文件内容)

加载自定义配置文件user.php,就是在config.php里面引入’LOAD_EXT_CONFIG‘=>’user‘,并且自定义配置文件是不会被项目定义,每次都会加载,建议不要自定义配置文件,因为不被缓存,每次都需要编译;ps  开启dubug配置文件不会被缓存的,define(‘APP_DEBUG‘,TRUE);在项目上线后关闭 

(2)thinkPHP简述执行过程

单一入口文件执行过程:1 修正系统配置的常量值  2 加载 thinkPHP.php  3加载 ./thinkphp/lib/core  4 加载 项目文件 ,分析url,调用相关的控制器action

Ps 单一入口:每次浏览器请求文件,都统一请求的是index.php 文件,有index.php 文件进行统一的调度: 一个简单的例子

// 例如 url为
// http://localhost:9096/index.php?c=index&a=index

//简单的控制器类
class index{
    //执行特殊的控制器构造的时候验证等
     function __construct(){}

     function index(){
        echo "我是控制index";
      }
    //......
}

//单一入口文件:简单index 内容

$controller = isset(_GET[‘c‘]) ?  _GET[‘c‘] : "index";
$action = isset(_GET[‘a‘])? _GET[‘a‘] : ‘index‘;

 $c = new $controller();
 $c->$action();
时间: 2024-10-05 04:19:09

thinkphp 学习_单一入口执行流程的相关文章

thinkphp学习笔记2—入口文件

原文:thinkphp学习笔记2-入口文件 在thinkphp中有两个入口文件,一个是项目的入口文件,是index.php在主目录里面,还有一个是thinkphp框架的的入口文件,放在框架目录下面如:D:\thinkphp\ThinkPHP,名字是ThinkPHP.php. thinkphp采用的是单一入口模式,所有的程序都是从项目入口文件开始执行的,项目入口文件内容包括: 定义框架路径,项目路径和项目名称(可选) 定义调试模式和运行模式相关变量(可选) 载入框架入口文件(必须) 在手册里面讲到

ThinkPHP学习-1:入口文件,命名空间和UserController.class.php

ThinkPHP放到wamp下的www目录即可启动,非常方便.ThinkPHP的唯一入口文件为./index.php. // 应用入口文件 // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True); // 定义应用目录 define('APP_PATH','./A

ThinkingInJava 学习 之 0000003 控制执行流程

1. if-else 2. 迭代 1. while 2. do-while 3. for 4. 逗号操作符 Java里唯一用到逗号操作符的地方就是for循环的控制表达式. 在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分隔的语句,而这些语句均会独立执行. 初始化部分可以有任意数量的同一类型的定义. 5. Foreach语法 6. return 在Java中多个关键词标识无条件分支,它们只是表示这个分支无需任何测试即可发生.(return.break.continue) 7. break

(一)熟悉执行流程——基于ThinkPHP3.2的内容管理框架OneThink学习

ThinkPHP作为国内具有代表性的PHP框架,经过多年的发展,受到越来越多公司与开发者的青睐.我也在忙里偷闲中抽出部分时间,来学习这个优秀的框架.在开始学习这个框架时,最好通过实例来学习,更容易结合实际的生产情况,促进学习的效果:这里我就选择由ThinkPHP团队开发的基于ThinkPHP3.2的内容管理框架OneThink来学习,从了解它的执行流程→熟悉流程中各个细节→了解模版标签→自己实际去使用标签→再了解它的实际执行过程……通过这样一个流程来熟悉如何基于ThinkPHP开发出一套CMS系

通过__DIR__和 getcwd()的不同之处来剖析像ThinkPHP等单一入口文件类框架模式

__DIR__,PHP5.3的全局预定义常量,为当前文件的所在目录的绝对路径形式的表示,类似的还有__FILE__,为访问本文件的绝对路径. getcwd()为get current working directory,即当前执行的脚本的目录位置,何为当前执行的脚本. index.php <?php     require_once('lib/init.php'); ?> lib/ init.php <?php     echo __DIR__;     echo '<br/>

ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/show/ 所执行的流程进行详细的分析,用户的URL访问首先是定位到了My项目的index.php 入口文件(注意:如果使用了URL_REWRITE,可能index.php已经被隐藏了),项目的入口文件所做的其实是实例化一个App应用实例,并且执行这个应用. 1.加载公共入口文件 在实例化App类之前,我们需要

ThinkPHP学习笔记(三)入口

1.入口文件 ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个项目都有一个统一(但不一定是唯一)的入口.应该说,所有项目都是从入口文件开始的,并且所有的项目的入口文件是类似的,入口文件中主要包括: 2定义框架路径.项目路径和项目名称(可选) 2定义调试模式和运行模式的相关常量(可选) 2载入框架入口文件(必须) 首先,在服务器或者本地的Web目录下面创建一个App目录,并且把下载的ThinkPHP框架的ThinkPHP目录拷贝到App目录下面,然后在App目录下面创建一

ThinkPHP 框架执行流程分析

总体来说,应用的流程涉及到几个文件:Index.phpThinkPHP.phpThink.class.phpApp.class.phpDispatcher.class.phpThinkPHP/Mode/common.phpReadHtmlBehavior.class.phpRoute.class.phpHook.class.phpContentReplaceBehavior.class.phpWriteHtmlCacheBehavior.class.php ThinkPHP框架开发的应用的标准执

MFC 程序入口和执行流程

一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用程序的窗口函数.而在MFC程序当中我们不在能找到类似WinMain这样的程序入口,取而代之的是一系列派生类的声明和定义以及一个冲CWinApp类派生而来的类的全局对象.CWinApp类被称之为应用程序对象,在一个MFC程序当中只允许有一个应用程序对象.由于CWinApp的派生对象是全局的,因此这个对