【问题标题】:What does double colons and underscore mean in Joomla?Joomla中的双冒号和下划线是什么意思?
【发布时间】:2013-09-16 06:00:21
【问题描述】:

我正在学习基本的PHP,试图阅读并获得对JOOMLA核心文件的一些基本了解,而我遇到了很多像“::_”这样的运算符,我不明白。

我做了一些谷歌研究,有很多关于双冒号 (::) 的解释,但几乎没有关于“::_”的解释,包含此运算符的文件之一是 joomla-site-root/mod_login/ tmpl/default.php,该行是

<form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="login-form">

那么这是什么意思? “JRoute::_('index.php', true, $params->get('usesecure'))”是JRoute类的函数调用吗?如果是,它是什么功能?我检查了 joomla API(http://api.joomla.org/Joomla-Platform/Application/JRouter.html) 但仍然一无所知。请,任何帮助将不胜感激。

【问题讨论】:

标签: php joomla


【解决方案1】:

双冒号称为scope resolution operator,用于调用静态类方法或属性。下划线没有任何意义,但_() 通常用于字符串翻译。

【讨论】:

    【解决方案2】:

    双冒号与 OOP(面向对象编程)一起使用。如果您是一般编程的新手,那么对象对于重用代码非常有用,并且一旦您对一般编程更加熟悉,那么绝对值得研究......也就是说,如果您还没有经验。希望对您有所帮助!

    -弗兰克

    【讨论】:

      【解决方案3】:

      上面提到的 :: 是 scope resolution operator,它允许访问静态、常量和覆盖的属性。因此,在 Joomla 的案例和您的问题中,它正在访问一个名为“_”的类静态方法。

      下划线“_”实际上是方法的名称。

      在 Joomla 中,你会发现很多类都实现了下划线方法,例如默认文本翻译工具:

      echo JText::_('COM_MYCOMPONENT_SORT_BTN_LABEL');  // This is the most commonly used one.
      

      只有少数仍然使用静态函数。 JHTML 是一个示例,其中 [JHTML::_][2] 充当类加载器,根据作为 $key 传入的第一个参数加载帮助文件

      echo JHtml::_('behavior.tooltip');
      echo JHtml::_('behavior.formvalidation');
      echo JHtml::_('sliders.panel', JText::_($fieldset->label), $fieldset->name);
      echo JHtml::_('link', JHelp::createUrl('JHELP_GLOSSARY'), JText::_('COM_ADMIN_GLOSSARY'), array('target' => 'helpFrame'));
      

      JLanguage 是一个带有下划线方法的 Joomla 类,您可能会看到它在各处使用,但与 JRoute[JText][4][JHTML][5] 不同,它不是静态调用的。例如

      $lang = JLanguage::getInstance($toUser->getParam('admin_language', $default_language), $debug);
      $lang->load('com_messages', JPATH_ADMINISTRATOR);
      $subject = sprintf ($lang->_('COM_MESSAGES_NEW_MESSAGE_ARRIVED'), $sitename);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-14
        • 2013-05-18
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 2013-10-13
        • 1970-01-01
        相关资源
        最近更新 更多