我不是在谈论别名实际的函数/方法名称本身,而是对其调用进行别名处理:
$test->some_method($a,$b);
我们可以将上述内容替换为:
$t_sm($a,$b);
同样,我不是在讨论实际函数/方法名称的别名,而是讨论它们的实际调用,减去参数。
编辑
不,我不想创建包装函数。并严格考虑可读性目的。它的可读性更强。
修改
当别名实际的方法调用时,它包含对象的名称,包括它调用的方法。好像我只是混淆了方法,我仍然必须明确地调用它上面的对象。
修改 是否有方法调用别名,以便:
class Foo
{
function Bar($msg)
{
echo $msg;
}
}
$f_b = 'Foo::Bar';
$msg = "calling method Bar via method-call-aliasing.";
$f_b($msg);
它创建了Foo的实例和该实例的别名以及指定的方法(' Bar'字符串的一部分' Foo :: Bar')。
答案 0 :(得分:3)
您需要创建一个callable
伪类型,对于一个对象方法,它是一个数组,如:
$t_sm = [$test, 'some_method'];
然后可以调用:
$t_sm($a, $b);
进一步的文件:http://php.net/manual/en/functions.variable-functions.php
答案 1 :(得分:-1)
嗨兄弟,我认为你在寻找这个。之前有人质疑:
<?php
namespace Name\Space {
const FOO = 42;
function f() { echo __FUNCTION__."\n"; }
}
namespace {
use const Name\Space\FOO;
use function Name\Space\f;
echo FOO."\n";
f();
}
?>
输出: 42
名称\空间\˚F
参考:http://docs.php.net/manual/en/migration56.new-features.php#migration56.new-features.use