您好,UncleToo欢迎您!  为了更好的浏览本站,请使用高版本浏览器
RSS  Tag     设为首页 | 加入收藏
 您所在的位置:首页 > PHP框架 > ThinkPHP

ThinkPHP:二级目录中__PUBLIC__路径使用方法

作者:  来源:互联网  日期:2013-11-25 8:08:34
收藏  评论:( 0 )  阅读:3564

在项目开发过程中,免不了会有二级目录的子项目,如BBS,blog等,当我们用ThinkPHP框架开发子目录的项目时,会发现__PUBLIC__有点琢磨不定,例如我们现在在项目中建立一个BBS项目,即localhost/bbs,在模板程序中使用__PUBLIC__时,会得到/bbs/Public,而在另外一个blog项目中即localhost/blog,同样的程序,得到的却是/Public。那么这就存在问题了,如果不确定__PUBLIC__的具体值,那我们在程序中引入的js、css等文件就都是无效的。如何解决这个问题呢,UncleToo这里整理了两种方法,供大家参考。

方法一:

修改__PUBLIC__的值。这也是最直接、最简单的方法。找到config.php文件,配置如下代码:

'TMPL_PARSE_STRING' => array( 
    '__PUBLIC__' => '/bbs/Public', 
);

这种方式虽然简单,但是有个弊端,当我们将这个项目复制到其他目录时,还需要来这里修改配置文件,比较麻烦,这时我们就需要另外一种方法了。


方法二:

保证二级目录名称与APP_NAME设置的名称不一致就可以了。这是为什么呢,我们看一下__ROOT__的定义。

在runtime.php文件中找到如下代码:

if(!defined('__ROOT__')) { 
        // 网站URL根目录 
        if( strtoupper(APP_NAME) == strtoupper(basename(dirname(_PHP_FILE_))) ) { 
            $_root = dirname(dirname(_PHP_FILE_)); 
        }else { 
            $_root = dirname(_PHP_FILE_); 
        } 
        define('__ROOT__',   (($_root=='/' || $_root=='\\')?'':$_root)); 
    }

看出问题所在了吧,如果说 APP_NAME 和 入口文件的路径的名字相同的话 $_root将会两遍 dirname 入口文件。也就是说,APP_NAME(入口文件中配置项)如果和二级目录名相同的话,将会直接取到主机名。如上的blog, $_root会先取 /blog,然后再取成/或\(看系统),最后再判断后定义。



除非特别声明,本站所有PHP教程及其他教程/文章均为原创、翻译或网友投稿,版权均归UncleToo中文网所有, 转载请注明作者及出处。
原文网址:http://www.uncletoo.com/html/think/699.html
读完这篇文章后,你是否有所收获? 分享是一种生活的信念!
  • 0
  • 0
我来说两句
更多>>网友评论