让我们有这两个类:
class Outer {
public function mySpecialMethod($method_name_string) {
// do something very complex
}
}
class lotsOfMethods {
public function a() {
// do something
}
public function b() {
// do something
}
public function c() {
// do something
}
}
我希望a()
,b()
和c()
在这些小方法被称为时自动调用mySpecialMethod($method_name_string)
,而无需为每种方法手动调用 。它还应该接收方法名称作为参数。
这个概念对我来说非常抽象,我不确定这样的东西是否在PHP中是可行的。如果有的话,我会非常感谢你的答案。
答案 0 :(得分:0)
以下是如何使用的详细示例:
<?php
class Outer
{
public function mySpecialMethod($method_name_string)
{
$a = new lotsOfMethods();
$a->{$method_name_string}();
}
}
class lotsOfMethods
{
public function a()
{
echo 'a';
}
public function b()
{
echo 'b';
}
public function c()
{
echo 'c';
}
}
$outer = new Outer();
$outer->mySpecialMethod("a");
$outer->mySpecialMethod("b");
$outer->mySpecialMethod("c");
答案 1 :(得分:0)
我能想象的唯一方法就是将函数作为像
这样的函数的paremeterpublic function runFunction($method) {
// always call the mySpecialMethod(method)
// also add the method as parameter to myspecialmethod
mySpecialMethod($method);
//check what to do based on parameter
switch ($method) {
case "a":
a();
break;
case "b":
b();
break;
case "c":
c();
break;
}
}
public function a() {
// do something
}
public function b() {
// do something
}
public function c() {
// do something
}
如果你创建一个新函数,你应该将新函数添加到开关,所以我不推荐它,我宁愿在新函数中添加mySpecialMethod()。唯一的好处是你总是可以决定像没有mySpecialMethod的那样直接运行函数。