爲何會產生這樣的 路徑 常量等 的 困擾?
是因爲 在tp中, 使用了多種形式的常量致使的, 好比, 有php語言自己的 "魔術常量", 有 php函數, 好比dirname定義的常量, 還有 define定義的常量等等, 因此 就感到 混淆了.php
魔術常量:css
魔術常量和tp定義的路徑常量在使用上的區別?
魔術常量自己定義的 路徑, 是不包含 後面的 '/'的;
而tp中使用的路徑常量, 如 ROOT, APPhtml
__DIR__
:
模板調整, 默認的模板替換行爲只支持下列替換規則:
'ROOT' => ROOT, // 當前網站地址
'APP' => APP, // 當前應用地址
'MODULE' => MODULE,
'ACTION' => ACTION, // 當前操做地址
'SELF' => SELF, // 當前頁面地址
'CONTROLLER'=> CONTROLLER,
'URL' => CONTROLLER,
'PUBLIC' => ROOT.'/Public',// 站點公共目錄函數
對於廢除的替換規則你能夠在模塊的配置文件中自行添加,例如:
'TMPL_PARSE_STRING'=>array(
'../Public'=> MODULE_PATH.'View/Public/',
'TMPL' => MODULE_PATH.'View/default/'
)網站
**所以, 你能夠看到 實際上沒有 PUBLIC 這個系統常量的, 只有在 模板文件中才能使用 PUBLIC, 而在 php文件中, 如各類Common目錄下的配置文件 config.php中 是不能使用 __PUBLIC__的, 是無效的. **code
dirname 就是 獲取完整文件名的 路徑部分. 注意不帶, 最後的斜槓htm
參考: http://www.cnblogs.com/xianglongsdu/p/5894631.html https://blog.tanteng.me/2014/11/php-line-class-dir/blog
結果__JS__等幾個變量在模板文件中沒法正確解析。緣由是__PUBLIC__是模板替換變量,只有出如今模板文件中時纔會被替換爲對應的字符串。而__ROOT__、__APP__、__MODULE__、__CONTROLLER__、__ACTION__、__SELF__既是模板替換變量,也是系統常量,它們能夠應用在模板文件和配置文件中,因此這裏能夠用__ROOT__ Home/Conf/config.php <?php return array( 'TMPL_PARSE_STRING' => array( '__CSS__' => '__PUBLIC__/Home/css', '__JS__' => '__PUBLIC__/Home/js', '__IMG__' => '__PUBLIC__/Home/img', ), ); 結果__JS__等幾個變量在模板文件中沒法正確解析。緣由是__PUBLIC__是模板替換變量,只有出如今模板文件中時纔會被替換爲對應的字符串。而__ROOT__、__APP__、__MODULE__、__CONTROLLER__、__ACTION__、__SELF__既是模板替換變量,也是系統常量,它們能夠應用在模板文件和配置文件中,因此這裏能夠用__ROOT__
ROOT、PUBLIC 模板常量在ThinkPHP\Library\Behavior\ContentReplaceBehavior.class.php 文件中定義字符串