Javascript和PHP之间的代码等价性

Javascript和PHP之间的代码等价性,php,function,Php,Function,我正在学习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中,对象是关联数组,因此每个属性都可以通过 下标符号 我是否可以在运行时向

我正在学习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中,我可以通过原型函数属性来实现这一点。

基本上,这在PHP中是不可能的。有些技巧允许您在某些情况下向新对象添加功能(如使用magic
\uu call
方法),但与JavaScript原型的功能相差甚远


如果您需要类似的服务器端语言,您可能希望学习Python而不是PHP。

这是可能的,但它并不健康,也不是一种好的做法,或者是您希望每天都做的事情。JavaScript和PHP的组织方式不同,您将在PHP中使用类和方法,在JavaScript中它们是对象和函数

下面是一个在5.2+中编写的示例,其中没有匿名函数:

<?php

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

function _t() {
    echo '<br>T';
}

$t = '_t';
$t();

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

var j =  myObj.DoStuff;
j();
*/
class myObj {
    var $doStuff = '';
}

function _DoStuff() {
    echo '<br>Do Stuff';
}

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

?>
有关匿名函数的更多信息,请参见-

我建议你多读一些对你有帮助的东西


您还可以在类中动态注入函数,这是您尝试做的第二件事,但一般来说这不是一个好主意。一个人在这里做了一些工作-

请记住,PHP5.3引入了完整的lambda函数,所以这确实是可能的。Lambdas不允许向现有对象添加方法。它们允许您创建内联匿名函数$myObj->doStuff=function(){}$j=$myObj->doStuff$j();我不能直接调用$myObj->doStuff();所以我不明白为什么如果我有一个返回数组的函数,我就做不到:myFunc()[2];//它需要3°的元素。。。PHP是不是一种动态语言???也许我会去找Python。。。
$t = function() {
    echo 'T';
}
$t();