PHP从外部调用类中的静态方法

先看常规调用(一定要带上命名空间)

<?php
namespace __0801;
//调用常规方法
function sum($a,$b)
{
    return "{$a} + {$b} = ". ($a + $b);
}

echo call_user_func_array(__NAMESPACE__.'\sum',[30,40]);

调用类中的方法

<?php
namespace __0801;
class Test1
{
    public function mut($a,$b)
    {
        return "{$a} * {$b} = ".($a * $b);
    }
}
//用对象去访问,call_user_func_array([对象,'方法'],[参数数组])
//$obj = new Test1();
echo call_user_func_array([new Test1(),'mut'],[10,20]);

 调用类中的静态方法

<?php
namespace __0801;

class Test1
{
    public static function mut($a,$b)
    {
        return "{$a} - {$b} = ". ($a -$b);
    }
}
echo call_user_func_array([__NAMESPACE__.'\Test1','mut'],[40,20]);
echo '<hr>';
echo call_user_func_array(__NAMESPACE__.'\Test1::mut',[90,50]);
echo '<hr>';
echo call_user_func_array([Test1::class,'mut'],[999,666]);

  

posted @ 2019-10-19 21:27  专门写bug  阅读(1195)  评论(0)    收藏  举报