当前位置: 亚洲城ca88 > ca88 > 正文

传智博客,境况搭建

时间:2019-06-20 23:08来源:ca88
怀着激动的心情打开了thinkPHP的文档,开启了第一次php框架学习。 1、入口文件index.php ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞

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

1、入口文件index.php

ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。

下载

2、ThinkPHP/ThinkPHP.php

目录结构

ThinkPHP最新版本可以在官方网站(
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以),框架的目录结构为:

  1. ├─ThinkPHP.php     框架入口文件
  2.  ├─Common 框架公共文件
  3.  ├─Conf 框架配置文件
  4.  ├─Extend 框架扩展目录
  5.  ├─Lang 核心语言包目录
  6.  ├─Lib 核心类库目录
  7.  │  ├─Behavior 核心行为类库
  8.  │  ├─Core 核心基类库
  9.  │  ├─Driver 内置驱动
  10.  │  │  ├─Cache 内置缓存驱动
  11.  │  │  ├─Db 内置数据库驱动
  12.  │  │  ├─TagLib 内置标签驱动
  13.  │  │  └─Template 内置模板引擎驱动
  14.  │  └─Template 内置模板引擎
  15.  └─Tpl 系统模板目录

注意,框架的公共入口文件ThinkPHP.php是不能直接执行的,该文件只能在项目入口文件中调用才能正常运行。

ThinkPHP最新版本可以在官方网站(

  require THINK_PATH.'Common/runtime.php';

入口文件

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

  1. <?php
  2.  require '/ThinkPHP框架所在目录/ThinkPHP.php';

这行代码的作用就是加载ThinkPHP框架的入口文件ThinkPHP.php,这是所有基于ThinkPHP开发应用的第一步。
然后,在浏览器中访问这个入口文件。

一般Web服务器的默认文件是index.php,所以我们可以不需要在URL地址中加上index.php。运行后我们会看到欢迎页面,
ca88 1
而且已经自动生成了项目目录,目录结构如下:

  1. ├─index.php     项目入口文件
  2.  ├─Common 项目公共文件目录
  3.  ├─Conf 项目配置目录
  4.  ├─Lang 项目语言目录
  5.  ├─Lib 项目类库目录
  6.  │  ├─Action Action类库目录
  7.  │  ├─Behavior 行为类库目录
  8.  │  ├─Model 模型类库目录
  9.  │  └─Widget Widget类库目录
  10.  ├─Runtime 项目运行时目录
  11.  │  ├─Cache 模板缓存目录
  12.  │  ├─Data 数据缓存目录
  13.  │  ├─Logs 日志文件目录
  14.  │  └─Temp 临时缓存目录
  15.  └─Tpl 项目模板目录

如果你希望项目的入口文件移动到app目录的外面,那么只需要修改入口文件index.php的内容为:

  1. <?php
  2. define('APP_NAME','app');
  3. define('APP_PATH','./app/');
  4.  require '/ThinkPHP框架所在目录/ThinkPHP.php';

APP_NAME和APP_PATH分部用于定义项目名和项目目录,项目名通常就是指项目的目录名称。
移动并修改完项目的入口文件后,我们就可以通过

访问app项目了。当然你也可以在Web根目录下面创建多个子目录来部署多个项目。


或者Github(
把下载后的压缩文件解压到你的WEB目录(或者任何目录都可以)

3、ThinkPHP/Common/runtime.php

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

  此文件声明了许多常量信息

入口文件

  加载创建应用目录

下面附上官网的内容

  if(is_file($file)) require_cache($file);

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

  自动创建应用目录

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

  build_app_dir();

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

     Think::Start();

单一项目

4、ThinkPHP/lib/Core/Think.class.php

我们就可以直接通过

  static function start(){}

多项目

  Think::buildAPP();//预编译项目

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

  APP::run();

创建project1文件夹

5、ThinkPHP/lib/Core/App.class.php

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

  static public function run(){}

加入如下代码

  App::init();

<?php

    Dispatch分析路由

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

    分析路由(控制器MODULE_NAME 方法 ACTION_NAME)index.php?c=控制器&a=方法

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

    App::exec();

?>

      通过反射ReflectionMethod使得控制器对象调用对应的方法。

在浏览器打开

ca88 2

ThinkPHP运行流程

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

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

ca88 3

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

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

  • 再次定义了一些常量,具体见源码;
  • ca88,创建项目目录结构,由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欢迎页面。

网站分享

ca88 4官网:

API:

论坛:

 

 


编辑:ca88 本文来源:传智博客,境况搭建

关键词: 亚洲城ca88