問題タブ [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.
php - パズルを解く人は次のとおりです。__set($ value、$ name)は、$ obj-> $ keyに一致するセッターが存在する場合は呼び出されませんが、存在しない場合は呼び出されます。
コンテキストは次のとおりです。
$key
が有効なキーの場合、__set($name, $value)
は呼び出されません。が有効なキーでない場合$key
は、有効です。私のセットは次のようになります。
メソッドが属するオブジェクトで__set($name, $value)
は、すべてのプロパティがプライベートであり、下線が引かれています。したがって、キー'name'の場合、次のようになります。
の直後に例外を挿入しようとしたので、呼び出されないことはわかってい$method = 'set' . ucfirst($name);
ます。この例外は$name
、有効なセッターを参照していない場合にヒットしましたが、参照していない場合はヒットしませんでした。毎回ヒットするはずだった。誰かがここで何が起こっているのか手がかりがありますか?
php - オブジェクト自体の__isset()マジック関数
私はあなたがこれを行うことができることを知っています
その後、次のことを行うために使用できます
ただし、これを行う方法はありますか
オブジェクト自体のマジックメソッド$obj
を使用してステータスの戻りを制御できる場合。__isset()
python - 分数を使用した __rsub__ および __rtruediv__
__rsub__
私が作成した Fraction というクラスで関数 を使用しようとしています。
Fraction クラスのコードは次のとおりです。
ここで、__radd__
または__rmul__
使用する場合:return self + other
またはreturn self * other
それぞれ、目的の結果が実行されます。ただし、単に演算子を変更するだけでは機能__rsub__
し__rtruediv__
ません。どうすればこれを修正できますか?
基本的に、関数を呼び出すコードは次のとおりです。
助けてくれてありがとう!
php - 魔法のメソッドは ArrayObjects 内では機能しませんか?
説明できないコードの問題に遭遇しました。私が考えることができる唯一のことは、魔法のメソッドは ArrayObjects 内では機能しないということです。たとえば、次のクラスがあるとします。
次の行で、「Notice: Undefined index: test ...」というエラーが表示されます。
それでも、これらの行は正常に機能します。
私は気が狂っていますか、それとも既知の問題ですか?
php - 紛らわしいPHPの問題を追跡する(__ set / __ getmagicである可能性がありますか?)
私はPropelであらゆる種類のことを行っていますが、これはおそらくビットエッジケースです-具体的には、テーブル名に関連付けられたクラス名がどこかにキャッシュされていることを発見しました。クラス名は異なるがテーブル名が同じであるモデルを再構築したためです(単体テスト用)目的)Propelは正しいピクルスに入っています。(この質問にはPropelの経験は必要ありません。PHPを理解しているだけで、おそらく特に魔法の呼び出しです)。
この問題をデバッグするために、列の値が設定されているときにPropelがテーブルの「tablemap」クラスにデータを入力することを発見しました。私の意図は、このポピュレーションがコードのどこで発生するかを解明することです。これにより、Propelでキャッシュされたテーブルマップをクリアできます。
具体的には、クラスTestOrganiserには生成された親BaseTestOrganiserがあり、これには列セッターメソッドがあります。
コメントによると、$ map-> getTables()の値は、$this->modifiedColumns[] = TestOrganiserPeer::NAME
行の結果として空から非空に移動します。ただし、このクラスまたはその子または親には__set()メソッドがないため、ここでどのコードをトリガーできるかについてはかなり不思議に思っています。
何か案は?
python - 任意のオブジェクトのPythonで無限大と負の無限大を作成する
順序付けられたデータ型(範囲セット)で機能するデータ構造を実装するライブラリに取り組んでいます。正と負の無限大を考慮に入れると、多くの操作(反転など)が面白くなります。
1つの目標は、日時オブジェクトをこのモジュールで動作させることです。数値以外のオブジェクトで無限大をサポートするために、INFINITYとNEGATIVE_INFINITYを作成しました。
残念ながら、cmp()操作の左側にある場合、これは日時オブジェクトでは機能しません。
オブジェクトが常に呼び出されるようにするcmpラッパーを使用することでこの制限を回避できることを望んでいましたが.sort()
、これらのオブジェクト間でcmpが呼び出されるようにするメソッドを実際に使用したいと思います。
他のどのオブジェクトよりも本当に小さく、他のどのオブジェクトよりも本当に大きいオブジェクトを作成する方法はありますか?
php - PHPの魔法のメソッドの例
Zend PHP学習ガイドからこの質問があり、適切な説明が見つかりません...
ガイドによると、解決策は「b,c,A,B,C,c: CC,b,c,A,B,C
」でなければなりません。理由がわかりません-多分あなたはそうしますか?私の意図は、$ m-> aの最初の呼び出しが結果「a」につながることですが、それは明らかに間違っています...
javascript - Javascript:オブジェクト/文字列が作成されたときに自動的に起動される関数を持つことは可能ですか?
質問は簡単です。PHP のように魔法の関数__construct()
がありますが、javascript で使用できる関連する関数やハックはありますか?
例:
あなたの答えを楽しみにしています。助けてくれてありがとう。
[バツ]
python - appengine ポリモデルで __setitem__ を上書きしても安全ですか?
put()
私は、Google アプリ エンジン用のスパム フィルター ライブラリを作成しています。これは、アプリ エンジン フックを使用して、データストアに入る直前に一部のデータを変更します。そのために、PolyModel クラスをサブクラス化するモデルを作成しました。このクラスをチェック可能にしたい場合は、サブクラス化する必要があります。
しかし、クラス内の一部のデータについては、値が変更されたときにいくつかのことをしたいと思います。そのためには、上書きする必要があります__setitem__
。しかし、sdk はこれを使用してモデルのプロパティの変更を決定したり、フィルターを適用したりするため、上書きを変更するとこれ__setitem__
が壊れる可能性があると思います。これを回避する最善の方法は何ですか?