thinkPHP框架

转载 2012年03月26日 11:19:29

下午试着改写控制器基类 Action中定义的方法,发现无效果,翻了下资料,原来是第一次 控制器基类 Action中的方法在第一次运行的时候就生成在了核心缓存文件~runtime.php中,故改写原系统目录/Lib/Think/Core下的代码无效,如需更改,可:

1. define( 'NO_CACHE_RUNTIME' , True);//不生成核心文件

2.修改后删除核心文件,重新运行重新生成.

 

ThinkPHP 正式版本开始引入了新的项目编译机制,所谓的项目编译机制是指系统第一次运行的时候会自动生成核心缓存文件 ~runtime.php 和项目编译缓存文件 ~app.php ,这些编译缓存文件把核心和项目必须的文件打包到一个文件中,并且去掉所有空白和注释代码,因为存在一个预编译的过程,所以还会进行一些相关的目录检测,对于不存在的目录可以自动生成,这个自动生成机制后面还会提到。当第二次执行的时候就会直接载入编译过的缓存文件,从而省去很多 IO 开销,加快执行速度。项目编译机制对运行没有任何影响,预编译操作和其他的目录检测机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。

编译缓存文件,默认是自动生成在项目目录下面的 Runtime 目录下面。如果希望自己设置目录,可以在入口文件里面设置 RUNTIME_PATH 进行更改,例如

define( 'RUNTIME_PATH' , './MyApp/temp/' );

注意在 Linux 环境下面需要对 RUNTIME_PATH 目录设置可写权限。

核心编译缓存文件 ~runtime.php 包含的文件由系统的 core.php 文件决定,如果是采用了模式扩展的话,就由模式扩展入口 文件决定。默认的核心模式下面包含了下面的一些文件:系统定义文件 defines.php 、系统函数库 functions.php 、系统基类 Think 、异常基类 ThinkException 、日志类 Log 、应用类 App 、控制器基类 Action 、视图类 View 。

其他类库可以在操作方法中使用系统导入机制或者自动加载机制完成加载。

项目编译缓存文件 ~app.php 通常包含了下面的一些文件:项目配置文件(由惯例配置、项目配置合并而成)、项目公共函数文件 common.php 。每个项目还可以单独添加自己的项目编译文件列表,只需要在项目配置目录下面定义 app.php 文件,返回需要额外添加到项目编译缓存的文件列表数组即可。

注意在调试模式下面不会生成项目编译缓存,但是依然会生成核心缓存。 如果不希望生成核心缓存文件的话,可以在项目入口文件里面设置 NO_CACHE_RUNTIME ,例如:

define( 'NO_CACHE_RUNTIME' , True);

以及设置对编译缓存的内容是否进行去空白和注释,例如:

define( 'STRIP_RUNTIME_SPACE' , false);

则生成的编译缓存文件是没有经过去注释和空白的,仅仅是把文件合并到一起,这样的好处是便于调试的错误定位,建议部署模式的时候把上面的设置为 True 或者删除该定义。

新手搭建ThinkPHP框架

分享知识 传递快乐 代码比较简单,很可能出现各种Bug,但可以满足初级用户,如有提议或更好的方法请留言--分享知识 传递快乐。 提示:首先确定部署的ThinkPHP框架能运行(Th...
  • xhaimail
  • xhaimail
  • 2015年07月22日 19:06
  • 1395

这几天弄ThinkPHP让我想起了当年弄java的那些框架的心情

下班了 年底了 等着大本营 发奖了这里发表一下 摆弄ThinkPHP这几天的个人感言:  因为动了 以后用 php+SQLite的活 换成 thinkPHP+SQLite的想法,thinkPHP+My...
  • lvhaipeng
  • lvhaipeng
  • 2010年12月17日 16:46
  • 4523

ThinkPhp框架学习之入门第一天

最近有个app需要做一下后台,虽然自己前段时间学了php也试着做过了个人主页和app的接口,但感觉真的非常烂,没有任何的框架架构可言,在后边进行扩展或需求修改后会带来很大麻烦,代码也会越来越臃肿。所以...
  • qq_24894159
  • qq_24894159
  • 2016年11月27日 00:59
  • 1153

thinkPHP框架介绍(一)

thinkPHP框架介绍(一)
  • leyangjun
  • leyangjun
  • 2014年12月02日 14:37
  • 1328

thinkphp框架中session的使用

本文实例讲述了ThinkPHP中Session用法。分享给大家供大家参考。具体如下: 在ThinkPHP封装了Session类,用户可以直接使用,常用的方法有: Session::set(na...
  • qq_37675827
  • qq_37675827
  • 2017年09月14日 11:29
  • 170

使用ThinkPHP框架快速搭建网站(通俗易懂)

使用ThinkPHP框架快速搭建网站          这一周一直忙于做实验室的网站,基本功能算是完成了。比较有收获的是大概了解了ThinkPHP框架。写一些东西留作纪念吧。如果对于同样是Web方...
  • u010098331
  • u010098331
  • 2016年05月25日 20:51
  • 826

ThinkPHP框架完全解析二

第二步:搭建主框架 在ThinkPHP.php这个框架入口文件中,代码主要分成两部分,常量定义部分和入口函数调用部分。 常量定义部分定义了五个常量,分别是版本号(THINK_VERSION,当前...
  • a767536305
  • a767536305
  • 2015年04月26日 15:05
  • 1173

关于THINKPHP,CodeIgniter,YIIframework三种较为主流框架的优缺点

ThinkPHP   ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Strut...
  • slqgenius
  • slqgenius
  • 2016年12月26日 09:50
  • 1346

基于thinkphp的框架视图框架,实现后台框架(适合程序员的后台框架)

我觉得呢,我写程序那么久了,我自己不怎么喜欢写html因为我的美感比较差,但是呢我写的程序除了功能比较完善外,还必须的美观! 以前老师教学的项目在我看来界面真心丑,所以每次自己都不想做成他那样。于是后...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2013年11月10日 22:47
  • 4405

ThinkPHP框架完全解析五

第五步:实现Dispatcher,解析url 每一个框架都有其内置的库文件,想要使用的时候,都需要使用include或者是require这两条命令将库文件引入进来。 然而,一个框架库文件是相当多,...
  • a767536305
  • a767536305
  • 2015年05月10日 19:29
  • 496
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:thinkPHP框架
举报原因:
原因补充:

(最多只允许输入30个字)