1


1

JavaScriptとPHPのコード等価性

私はPHPを学ぼうとしていますが、いくつかの関数等価構造があるかどうか知りたいです:

JSでできること:

var t = function() {};
t();

myObj.DoStuff = function() {} // here I add a method at run-time
myObj.DoStuff();
myObj["DoStuff"]();

var j =  myObj.DoStuff;
j();

そして、関数評価に関するその他のこと。

Jsでは、オブジェクトは連想配列であるため、すべてのプロパティには添え字表記を使用してアクセスできます…​

実行時にメソッドをクラステンプレートに追加して、次にそのオブジェクトインスタンスがそれを保持できるようにすることはできますか?

JSでは、プロトタイプ関数プロパティを介してそれを行うことができます。

2 Answer


2


それは可能ですが、それは健康的ではなく、良い習慣でもありませんし、日常的にやりたいことでもありません。 JavaScriptとPHPの編成は異なります。PHPではクラスとメソッドを使用します。JavaScriptでは、オブジェクトと関数になります。

これは、匿名関数が存在しない5.2+で書かれたものの例です。

doStuff = '_DoStuff';
$j = $myObj->doStuff;
$j();

?>

5.3以降では、anonymous関数が導入されたため、それも可能です

$t = function() {
    echo 'T';
}
$t();

匿名関数の詳細はこちら-http://php.net/manual/en/functions.anonymous.php

http://php.net/manual/en/functions.variable-functions.php [変数の関数名]について詳しく読むことをお勧めします。

また、クラス内に動的に関数を挿入することもできますが、これは2番目にやろうとしていることですが、一般的には良い考えではありません。 ある男がここでいくつかの作業を行いました-http://www.gen-x-design.com/archives/dynamically-add-functions-to-php-classes/


0


基本的に、PHPでは不可能です。 いくつかの場合、新しいオブジェクトに機能を追加することができます(魔法の `__call`メソッドを使用するなど)が、JavaScriptプロトタイプでできることに近いものはありません。

サーバー側の言語で同様のものが必要な場合は、PHPではなくPythonを学習することをお勧めします。