web-dev-qa-db-ja.com

JHtml :: _は何をしますか?

私はこのようなコードを見てきました:

JHtml::_("script", "path/to/script.js");
JHtml::_("stylesheet", "path/to/stylesheet.css");
JHtml::_("jquery.framework");

ここでアンダースコア関数は何をしますか?

6
Flimm

ほとんどの時間

_JHtml::_("script", "path/to/script.js");
JHtml::_("stylesheet", "path/to/stylesheet.css");
JHtml::_("jquery.framework");
_

電話します

_JHtml::Script("path/to/script.js");
JHtml::Stylesheet("path/to/stylesheet.css");
JHtmlJquery::framework();
_

ただし、2つの呼び出しにはわずかな違いがあります。 1つ目は、システムプラグインがコアクラスをオーバーライドできるようにします。

おかしな理由でJoomlaに同梱されているJQueryバージョンが気に入らないとしましょう。これで、システムプラグインを作成し、onAfterInitialiseイベントで_jquery.framework_呼び出しに別のメソッドを登録するだけです。 JHtml::register('jquery.framework', 'ClassToLoad::MethodToCall') を使用してそれを行うことができます

Michael Babkerが サンプルプラグイン を作成しました。これにより、ロードされたBootstrapバージョンを変更できます。それがどのように機能するかを理解するのに役立つ場合があります。

8
Bakual

これは単なるショートカットであり、タイピングを節約するためのものだと思います。 ドキュメント はクラスローダーメソッドと呼ばれます。

JHtml::_("script", "path/to/script.js");
# is the same as:
JHtml::script("path/to/script.js");

JHtml::_("stylesheet", "path/to/stylesheet.css");
# is the same as:
JHtml::stylesheet("path/to/stylesheet.css");

JHtml::_("jquery.framework");
# is the same as:
require_once 'libraries/cms/html/jquery.php';
JHtmlJquery::framework();

最初の引数を正しい関数名に変換するアルゴリズムがあります。ファイルlibraries/cms/html/html.phpで、 aソースコード を確認できます。

2
Flimm