bind_module和DEFAULT_MODULE】的更多相关文章

在入口文件中定义define('BIND_MODULE', 'Admin'); 默认就会去找Admin模块. 配置文件中的 'DEFAULT_MODULE' => 'Home', // 默认模块 也指定了默认模块. 如果定义了BIND_MODULE的话就会以BIND_MODULE为准.…
在上一章我们说到,ThinkPHP.php在设置完框架所需要的变量和调教好环境后,在最后调用了  Think\Think::start();  即Think命名空间中的Think类的静态方法start,从而开启了引用的初始化.Think\Think就是tp框架的引导类,这个类的主要作用就是负责诸多配置加载,注册核心系统扩展(自动加载类库.异常处理.错误处理等),管理和维护类实例.别名映射,可以一说是一个框架的工厂. 下面我们就来分析一下这个类. 1:类所在的路径 ThinkPHP\Library…
上次回顾: IS_CGI ,IS_WIN,IS_CLI,MAGIC_QUOTES_GPC干嘛用 IS_WIN 看了一下后面的代码  基本上就是为了保证在不同环境下运行时,由于有些操作系统会对文件路径大小写敏感,定义该参数.对路径进行更严格的检查.  MAGIC_QUOTES_GPC  : if(version_compare(PHP_VERSION,'5.4.0','<')) { ini_set('magic_quotes_runtime',0); define('MAGIC_QUOTES_GP…
总体来说,应用的流程涉及到几个文件:Index.phpThinkPHP.phpThink.class.phpApp.class.phpDispatcher.class.phpThinkPHP/Mode/common.phpReadHtmlBehavior.class.phpRoute.class.phpHook.class.phpContentReplaceBehavior.class.phpWriteHtmlCacheBehavior.class.php ThinkPHP框架开发的应用的标准执…
如果有人读这篇文章并跟着做的话,希望你能使用支持函数跳转的编辑器,还要善用var_dump和exit,对着源码去调试着看.跟着入口文件读,执行到哪里你看到哪里,对于那些不能一眼看出来的配置,则要记录下来,可能一个比较简单的功能会写出很长的代码,这个时候难免会看到后面忘了前面. 那么进入正题,从index.php文件可以看到入口文件只定义了几项常量作为配置,紧接着就引入了require './ThinkPHP/ThinkPHP.php'; // 检测PHP环境 if(version_compare…
class Think { public static function start() { // 注册AUTOLOAD方法 spl_autoload_register('Think\Think::autoload'); // 设定错误和异常处理 register_shutdown_function('Think\Think::fatalError'); set_error_handler('Think\Think::appError'); set_exception_handler('Thin…
thinphp3.2中提供了自定义生成模块与控制器的常量,分别是BIND_MODULE,BUILD_CONTROLLER_LIST 在 index.php 文件中定义 BIND_MODULE,BUILD_CONTROLLER_LIST 常量 1 2 3 4 5 6 7 8 9 10 11 // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',True);   // 定义应用目录 define('APP_PATH','./App/'); // …
1.index.php if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',true); // 创建 //define('BIND_MODULE','Login'); define('erp',true); // 定义应用目录 define('APP_PATH','./App/'); //…
一.概念 应用:基于同一个入口文件访问的项目称之为一个应用. 模块:一个应用下面可以包含多个模块,每个模块在应用目录下面都是一个独立的子目录,是一个包含配置文件.函数文件和MVC文件(目录)的集合. 控制器:每个模块可以包含多个控制器,一个控制器通常体现为一个控制器类. 操作:每个控制器类可以包含多个操作方法,也可能是绑定的某个操作类,每个操作是URL访问的最小单元.   二.典型的URL访问规则 http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作…
下面我们来分析一下Thinkphp中的url解析和路由调度类.此类主要功能是 // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (…
在刚刚安装好tp框架时,我们的路径一般是这样的: http://localhost/index.php/Home/Index/index?name=cly 我们可以通过下面一步步的步骤来优化这个路径 1.隐藏index.php并修改传参模式 打开apache目录的conf文件夹里面的httpd.conf文件 把LoadModule rewrite_module modules/mod_rewrite.so前面的#去掉 将里面Directory块中的AllowOverride none全部改为Al…
多模块 在 ThinkPHP 3.2.3 中,默认的应用目录是 ./Application,下面的默认模块是 Home 模块,如果此时需要添加一个 Admin 模块用于后台应用,根据手册 http://www.kancloud.cn/manual/thinkphp/1696 中 “自动生成模块目录” 的部分的说明,在默认的入口文件 ./index.php 中添加: // 绑定Admin模块到当前入口文件 define('BIND_MODULE','Admin'); 此时运行 http://ser…
在index.php文件中设置常量: define('BIND_MODULE', 'Home'); 进行绑定默认访问的模块. 同样的,也可以在配置文件config.php中的配置数组中设置配置常量: 'DEFAULT_MODULE' => 'Home', 使用上的不同: 虽然使用上述两种方法在初始访问默认的模块时都能达到相同的效果, 但是当在页面中使用U()函数生成静态页面后, 仅仅在配置文件中定义 DEFAULT_MODULE 已经无法正确访问到相应的模块了, 所以需要使用define绑定默认…
菜鸟一个,大神不用看,很喜欢单入口 多模块的方式,所以想自己设置下,结果看很多教程没看懂,也看到有人在问这个问题,分享下我的项目名称是app,首先运行官方的index.php文件,app目录下生成了三个文件夹Runtime Common,Home,接下修改官方入口文件index.php,在里面加一句define('BIND_MODULE','Index');,再次运行,app目录下自动生成了一个Index模块,现在app下面有四个文件夹,Runtime Common,Home,Index,继续修…
-------------------------------------(写代码不孤独_小小代) 用Onthink写了一个网站暂时还没上线功能略显不全没,完全没有发挥出应有的强大拓展之处,各种地方略显蹩脚. 但是其强大的数据表控制还是显漏一角,鉴于此进军基于开发的thinphp3.2.2世界... 第一天 完成手册序言,基础,配置,架构,路由阅读. 第二天 完成控制器模型阅读   关于 附录阅读 下面是阅读随录 *****************************************…
原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,…
在index.php中加入(可以省略Home,直接写控制器和方法访问) define('BIND_MODULE','Home'); 在config.php里边加入 'MODULE_ALLOW_LIST' => array('Home','Admin','User'),'DEFAULT_MODULE' => 'Home'…
tp中有三种常量: 预定义常量, 这个设置后不会随环境的改变而改变的,比如'URL_MODEL' => 1 注意是 model, 不是 url_mode 路径常量, 也不会随环境的改变而改变的, 比如define('THINK_PATH', './ThinkPHP/'), define('LIB_PATH', THINK_PHP.'Library/'); 系统常量, 这个会随着环境/文件的不同而不同的, 比如: 在模板中常用到的各种地址和名字等 : __ROOT__, __CONTROLLER_…
tp默认的编码是utf-8 Runtime中的Cache和Logs都是分模块的,因为在应用app下可以有多个模块,但是 公共模块和Runtime模块只有一个, 所以, Runtime要包含各个模块的内容. 包括home和admin的内容: 比如:Cache/Home/....php, Cache/Admin/...php, Logs/Admin/...log , Logs/Home/....log 不管是任何一种语言, 都要养成相同的, 严格严禁的编程习惯, 比如变量在使用前, 要事先声明并初始…
1.模块化: Application 默认应用目录(可以设置) ├─Common 公共模块(不能直接访问) ├─Home 前台模块 ├─Admin 后台模块 ├─... 其他更多模块 ├─Runtime 默认运行时目录(可以设置) 2.自动生成模块目录 从3.2.2版本开始,可以支持自动生成默认模块之外的模块目录以及批量生成控制器和模型类. 例如,如果我们需要生成一个Admin模块用于后台应用,在应用入口文件中定义如下: // 绑定Admin模块到当前入口文件 define('BIND_MODU…
通常入口文件是 index.php <?php define('APP_DEBUG',true); //define('BIND_MODULE','Home'); 这句代码会自动生成Home模块,并且绑定Home模块 define('APP_NAME','Application'); define('APP_PATH','./Application/'); require './ThinkPHP/ThinkPHP.php'; 在定义入口文件的时候,尽量不要定义 BIND_MODULE 定义了这个…
C方法 function C($name=null, $value=null,$default=null) { static $_config = array(); // 无参数时获取所有 if (empty($name)) { return $_config; } // 优先执行设置获取或赋值 if (is_string($name)) { if (!strpos($name, '.')) { $name = strtolower($name); if (is_null($value)) re…
本文首发自安全脉搏,转载请注明出处. 前言 ThinkPHP官方最近修复了一个严重的远程代码执行漏洞.这个主要漏洞原因是由于框架对控制器名没有进行足够的校验导致在没有开启强制路由的情况下可以构造恶意语句执行远程命令,受影响的版本包括5.0和5.1版本. 测试环境: ThinkPHP 5.1 beta+ win10 64bit + wamp 漏洞分析 网上已经有些分析文章了,我就正向分析下这次漏洞过程.不同版本的ThinkPHP调用过程和代码会稍有差异,本文分析的是ThinkPHP 5.1 bet…
一个完整的ThinkPHP应用基于模块/控制器/操作设计,并且,如果有需要的话,可以支持多入口文件和多级控制器. ThinkPHP3.2采用模块化的架构设计思想,对目录结构规范做了调整,可以支持多模块应用的创建,让应用的扩展更加方便. 一个典型的URL访问规则是(我们以默认的PATHINFO模式为例说明,当然也可以支持普通的URL模式): http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] ThinkPHP3.2的应用可以…
需求: 访问这个目录的时候,http://xx.com/p-412313要重定向到(暂且这么叫)http://xx.com/Home/Blog/index/id/412313 就是看着好看 我的应用目录是Application.模块是Home 第一步:知道哪个文件怎么处理的路由 路由处理在think/Route.class.php // 动态路由处理 $routes =   C('URL_ROUTE_RULES'); // var_dump($routes); if(!empty($routes…
thinkphp文件夹下config 里面有个convention.php文件 里面有三个配置 'DEFAULT_MODULE' => 'Home', // 默认模块 'DEFAULT_CONTROLLER' => 'Index', // 默认控制器名称 'DEFAULT_ACTION' => 'index', // 默认操作名称 改掉这三个就可以改默认的首页…
一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口文件为 index.php, mobile.php,admin.php,入口文件中设定绑定模块: ThinkPHP配置>>>>>>>>>>>>>>>>>>>>>>>>…
前言:建立一个网站系统,往往包含多个子网站,例如PC官网,移动端官网,后台管理,数据源自一个相同的数据库,整个架构上,从ThinkPHP来看,可以大体理解为Model(M)是一样的,Controller(C)包含共用API部分和不共用部分,View则是完全不共用的,这里在整个初始架构的时候,我们可以主要从以下几个方面去考虑: 配置共用的数据库.扩展Application里面的模块.自定义视图文件夹.子域名部署.路由简化.... 具体操作如下: 1.准备ThinkPHP环境.数据库 a.下载官网T…
一.app视图与控制器…
URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/home-user-login-var-value开始的,pathinfo也支持普通的参数传值(仅仅支持参数...). 在thinkphp中,有两个地方使用depr,另一个就是tpl的文件目录组织分隔符: 'TMPL_FILE_DEPR'=>'-' URL_PATHINFO: 意思是路径信息,意思是 网页的u…