zoukankan      html  css  js  c++  java
  • thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?

    1. 为什么会产生这样的 路径 常量等 的 困扰?
      是由于 在tp中, 使用了多种形式的常量导致的, 比如, 有php语言本身的 "魔术常量", 有 php函数, 比如dirname定义的常量, 还有 define定义的常量等等, 所以 就感到 混淆了.

    2. 魔术常量:

    3. 魔术常量和tp定义的路径常量在使用上的区别?
      魔术常量本身定义的 路径, 是不包含 后面的 '/'的;
      而tp中使用的路径常量, 如 ROOT, APP


    __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__的, 是无效的. **


    dirname 就是 获取完整文件名的 路径部分. 注意不带, 最后的斜杠

    参考: http://www.cnblogs.com/xianglongsdu/p/5894631.html https://blog.tanteng.me/2014/11/php-line-class-dir/

    结果__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__
    
    
    

    ROOTPUBLIC 模板常量在ThinkPHPLibraryBehaviorContentReplaceBehavior.class.php 文件中定义

  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/bkylee/p/6483170.html
Copyright © 2011-2022 走看看