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