Joomla中双冒号和下划线的含义是什么?

时间:2013-09-12 02:17:21

标签: php joomla

我正在学习基本的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-&gt; get('usesecure'))”类JRoute的函数调用?如果是的话,它的功能是什么?我检查了joomla API(http://api.joomla.org/Joomla-Platform/Application/JRouter.html),但仍然无能为力。拜托,非常感谢任何帮助。

3 个答案:

答案 0 :(得分: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]不同,它不是静态调用的。 e.g。

$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);

答案 1 :(得分:0)

双冒号称为scope resolution operator,用于调用静态类方法或属性。 Underscore并不意味着什么,但_()通常用于字符串翻译。

答案 2 :(得分:0)

双冒号与OOP(面向对象编程)一起使用。如果你是一般的编程新手,那么对象在重用代码时非常有用,一旦你对编程感觉更舒服就绝对值得研究......那就是你没有经验。希望有所帮助!

-Frank