問題タブ [magic-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
7798 参照

php - コントローラーの下ですべてのアクションを制御するためのYiiの魔法の方法

コマンドーはあなたからの助けが必要です。

Yiiにコントローラーがあります:

/ page ||の下のすべてのサブリクエストを制御するために、YiiCControllerの下にいくつかの魔法のメソッドが必要です。ページコントローラー。

これはYiiでどういうわけか可能ですか?

ありがとう!

0 投票する
3 に答える
1547 参照

php - 画像ギャラリーフォームはMagentoAdminでどのように入力されますか

私はそれを見ることができ、プロトタイプクラス を介して画像データをブラウザに入れる責任がMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()あります。app\design\adminhtml\default\default\template\catalog\product\helper\gallery.phtmlProduct.Gallery

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contentただし、画像コレクションがブロックのどこに設定されているかを追跡することはできません。コントローラーまたはレイアウトのどこかにある魔法のセッターを介してそれを想定していますが、それを追跡することはできません。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()もっている

elementそのため、そのブロックの属性に何かが入力されています。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Contentによってインスタンス化されてMage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()いるようですが、ブロックに属性が設定されていません。

これにより、 Javascriptが探してMage_Catalog_Model_Product_Attribute_Backend_Media::afterLoad()いる構造に一致する配列が属性に入力されていることがわかりますが、属性がレンダリングブロックに関連付けられている場所についてはまだ少し不思議です。Product.Gallery

このもつれたウェブを頭の中でまっすぐに保つための図が必要だと思います!

ありがとう、
ジョナサン

0 投票する
2 に答える
2566 参照

php - PHPで変数が静的であるかどうかをテストすることは可能ですか?

PHPで変数が静的であるかどうかをテストすることは可能ですか?__get静的変数も調べる魔法のメソッドを作成しようとしています。property_exists()変数が静的な場合もtrueを返すことがわかりました。しかし、私は期待する::代わりに使用する必要がありますか?->

0 投票する
2 に答える
104 参照

php - マジック __call メソッドの文字列マッチング

次のような名前のメソッドのセットがありますgetThing($what, $extra_args)( getは常に名前に含まれています)

...そして、それらを呼び出す通常の方法に加えて、次のように呼び出すこともできます。

  • getWhatThing()=>return getThing($what, $extra_args);

  • WhatThing()=>echo getThing($what, $extra_args);

  • Thing('what')=>echo getThing('what', $extra_args);

  • これらすべてが失敗した場合、メソッドが存在しないというエラーがスローされます...

内からこれを行うにはどうすればよい__call()ですか? 魔法のメソッドを避けるべきなのはわかっていますが、私の API を使用する人々の生活を楽にしたいのです :)

ありがとう

0 投票する
7 に答える
1474 参照

php - コードが少ないことを除いて、従来のゲッター/セッターメソッドの代わりに__get / __ setを使用することに利点はありますか?

Javaから来たので、私はPHPに休暇で数回しか訪問していません。魔法のgetメソッドとsetメソッドを見ると、私の(Javaの影響を受けた)おなかが痛くなり始めています。プロパティに直接アクセスしているように見えます(もちろん、実際には__getと__setを使用しています)。

つまり、作成する必要のあるコードが少ないことを除いて、従来のgetX()/ setX()メソッドの代わりにマジックゲッターメソッドとセッターメソッドを使用することに利点はありますか?PHPをコーディングするときにそれらを使い始める必要がありますか?

ありがとう、そして最高!

0 投票する
3 に答える
3793 参照

python - Pythonにハイブリッドgetattr+__getitem__が組み込まれていないのはなぜですか?

dictやその他のオブジェクトを受け入れるメソッドと、それらのオブジェクトからフェッチする「フィールド」の名前があります。オブジェクトがdictの場合、メソッドは__getitem__名前付きキーを取得するために使用します。そうでない場合はgetattr、名前付き属性を取得するために使用します。これは、Webテンプレート言語ではかなり一般的です。たとえば、カメレオンテンプレートでは、次のようになります。

fooのようなdictとして渡す場合は、「keyname」キーをフェッチして「bar」を取得します{'keyname':'bar'}。が次のようなクラスのインスタンスである場合foo.keynamefoo

次にfoo.keyname、属性から値をフェッチしkeynameます。カメレオン自体は、次のchameleon.py26ようにその機能を(モジュール内で)実装します。

私はそれを次のような自分のパッケージに実装しました:

問題は、それはかなり一般的なパターンです。多くのモジュールで、その方法またはそれに非常によく似た方法を見てきました。では、なぜ言語のコア、または少なくともコアモジュールの1つにそのようなものがないのですか?それができない場合、それをどのように書くべきかについての決定的な方法はありますか?

0 投票する
3 に答える
1406 参照

php - PHP__get__setメソッド

これらの機能を使用するポイントは何ですか。

私が使用できる場合

なぜ私はわざわざ「樹皮」を宣言するのでしょうprotectedか?この場合の__get()and__set()メソッドは、「樹皮」を効果的に公開しますか?

0 投票する
3 に答える
413 参照

php - PHP__callStaticおよび無効なメソッド名の文字

__callStatic()PHPに関する簡単な質問。

期待される出力:

実際の出力:

この構文は許可されておらず、機能も使用できません__callStatic()か?

:一時変数なしで逃げようとしています。以下が機能します。

しかし、私はそれを避けようとしています。

0 投票する
4 に答える
58951 参照

python - Python ユーザー定義クラスをソート可能、ハッシュ可能にする

Pythonでユーザー定義クラスをソート可能および/またはハッシュ可能にするときに、どのメソッドをオーバーライド/実装する必要がありますか?

注意すべき落とし穴は何ですか?

インタープリターに入力dir({})して、組み込みの dict のメソッドのリストを取得します。それらのうち、いくつかのサブセットを実装する必要があると思います

Python2 とは対照的に、Python3 で実装する必要があるメソッドに違いはありますか?

0 投票する
1 に答える
96 参照

php - プロパティを返すオブジェクト?

Typeというクラスがあります。

次の名前のプロパティがあります$value

関数を使おうとすると、オブジェクトを渡すときに、の値$obj->valueが渡されることを望みます。例えば:

いろいろ試してみましたが、どこでも検索できませんでした。それも可能ですか?

前もって感謝します。:)

編集:多分あなたは私の質問を少し誤解した(または狭めた)。文字列だけでなく、すべての値型に必要ですint floatboolean