問題タブ [magic-function]
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 - PHP で __construct()、__get()、__set()、および __call() を使用する/使用する必要があるのはいつですか?
同様__construct
の質問で について説明していますが、これを見つけた検索者のためにタイトルに残しました。
どうやら、__get と __set は、取得または設定される変数であるパラメーターを取ります。ただし、変数名を知っている必要があります (たとえば、人の年齢が $myAge ではなく $age であることを知っているなど)。したがって、変数名を知っている必要がある場合、特によく知らないコード (ライブラリなど) を操作している場合は、意味がわかりません。
__get()
、__set()
、およびを説明しているページをいくつか見つけまし__call()
たが、なぜ、いつ役立つのかはまだわかりません。
alias - IPython で %magics のエイリアスを作成するにはどうすればよいですか?
%edit -x のエイリアス %xed を作成したいとします。どうすればいいですか?
php - マジック関数と継承
(PHP を使用して) 別のマジック オブジェクトを拡張するマジック オブジェクトを作成できるかどうかを知りたいです。
php - PHPのempty()の魔法の関数は何ですか?
と同じものではないので__isset
、そうではありませんisset()
empty()
php - 通常と魔法のセッターとゲッターの違い
セッション変数に魔法のゲッター/セッター クラスを使用していますが、通常のセッターとゲッターの違いがわかりません。
コード:
最初に気付いたのは$session->_unset('var_name')
、変数を削除するために呼び出す必要があることです。それについては「魔法のような」ことは何もありません。
第二に、これを使用しようとすると$session->some_var
機能しません。を使用してのみセッション変数を取得できます$_SESSION['some_var']
。
PHPのマニュアルを見ましたが、関数は私のものと同じように見えます。
私は何か間違ったことをしているのですか、それともこれらの関数について何か魔法はありませんか?
python - Mercurial/Python - アンダースコア関数は何をしますか?
Mercurial では、多くの拡張機能がヘルプ/構文文字列をアンダースコア関数の呼び出しにラップします。次のようにします。
これは私を混乱させます。なぜなら、それは必要ではないようで (拡張機能の記述の説明では言及されていません)、クラスに _ が定義されていないように見えるからです。ラムダの別の言い方か、恒等関数のことか。さらに、ドキュメントが示唆するような生の文字列だけに比べて、この方法論 (それが何であれ) の利点は何なのか疑問に思っています。
私が見た Python ドキュメントでそのような関数について言及しているものは何もないので、これが本当に Python に関する質問なのか、それとも Mercurial に関する質問なのかはわかりません。
この構造を使用する 2 つの例を次に示します (cmdtable
ファイルの下部にある辞書を参照してください)。
php - 関数の魔法の関数__call()?
phpの魔法の関数__call()はクラスで使用されます。同様の魔法の関数はありますが、代わりに関数用ですか?__autoload()のように関数用です。
たとえば、このようなもの
php - 配列クラスのプロパティで__get()を使用して、クラスで自動伝播する
「$sessions」という配列を含むactiverecordモデルがあります。私がやりたいのは、次のようにインデックスが付けられるように、これを2D配列にすることです。
次に、クリームを上に追加して、ユーザーができるようにします。
そして、__get
クラス変数( "$ sessions")のその位置にオブジェクトが既に存在するかどうかを理解し、プロパティをクラスに追加/編集するか、"Session"と呼ばれるその位置に新しいクラスを作成します。
配列のインデックスで__getを取得するためにPHPを(可能であれば)取得する方法について少し混乱しています。
python - Python組み込み関数と魔法の関数とオーバーライド
重複の可能性:
メタクラスのインターセプト オペレーター ルックアップ
新しいスタイル クラスで Python の「マジック」メソッドの呼び出しをインターセプトするにはどうすればよいですか?
次のコードを検討してください。
出力は私にとって驚くべきものでした:
str(a)
マジックメソッドにマップされるべきで はありませんa.__str__()
か?- custom を削除しても
ClassA.__str__()
、ClassA.__getattribute__()
まだ呼び出しがキャッチされません。どうして?
php - Magento コレクションからデータを取得する
1 行のデータを含むコレクションがあります。私が次のことをすると、
以下のような配列が得られます。
しかし、私が行う$collection->getField1()
と、未定義のメソッドと表示されます。私が知る限り、php マジック ゲッターはこのように動作するはずです。ではない?
foreach コンストラクトなしでこの値を取得する方法についてのアイデア。