Javascript和PHP之间的代码等价

时间:2010-04-09 13:44:14

标签: 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中,对象是关联数组,因此每个属性都可以访问 下标符号......

我可以在运行时将一个方法添加到类模板中,以便接下来它的对象实例可以拥有它吗?

在JS中,我可以通过原型函数属性来实现。

2 个答案:

答案 0 :(得分:2)

这是可能的,但它不健康,不是一个良好的做法或你想做的日常基础。 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();

?>

在5.3+中他们引入了匿名函数,所以你甚至可以这样做

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

有关匿名函数的更多信息,请访问http://php.net/manual/en/functions.anonymous.php

我建议你阅读更多关于Variable function names的内容,这些内容最有帮助。

你也可以在一个Class中动态注入函数,这是你想要做的第二件事,但一般来说这不是一个好主意。一个人在这里做了一些工作 - http://www.gen-x-design.com/archives/dynamically-add-functions-to-php-classes/

答案 1 :(得分:0)

基本上,PHP不可能。有些技巧可以让你在某些情况下为新对象添加一个功能(比如使用魔术__call方法),但没有什么能与你使用JavaScript原型做的事情相近。

如果你需要类似服务器端语言的东西,你可能想要学习Python而不是PHP。

相关问题