在PHP中有一种方法来对函数/方法调用进行别名吗?

时间:2018-01-18 08:50:16

标签: php function methods alias

我不是在谈论别名实际的函数/方法名称本身,而是对其调用进行别名处理:

$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')。

2 个答案:

答案 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

Can we alias a function in php?