Php 建议替换不推荐的call\u user\u方法?

Php 建议替换不推荐的call\u user\u方法?,php,deprecated,Php,Deprecated,由于PHP和被标记为不推荐使用,我想知道推荐什么替代方案 一种方法是使用,因为在第一个参数中提供一个包含对象和方法名的数组与不推荐使用的函数一样。既然这个函数没有被标记为不推荐,我想原因不是它们的非OOP风格用法 我能想到的另一种方法是使用,这可能是最舒适和面向未来的选择。尽管如此,它的代码更多,我可以想象它比使用上面提到的函数要慢 我感兴趣的是: 有没有一种全新的方法可以通过名称调用对象的方法 哪一个是最快/最好/正式的替代品 反对的理由是什么 正如您所说,可以轻松复制此函数的行为。有什么问

由于PHP和被标记为不推荐使用,我想知道推荐什么替代方案

一种方法是使用,因为在第一个参数中提供一个包含对象和方法名的数组与不推荐使用的函数一样。既然这个函数没有被标记为不推荐,我想原因不是它们的非OOP风格用法

我能想到的另一种方法是使用,这可能是最舒适和面向未来的选择。尽管如此,它的代码更多,我可以想象它比使用上面提到的函数要慢

我感兴趣的是:

  • 有没有一种全新的方法可以通过名称调用对象的方法
  • 哪一个是最快/最好/正式的替代品
  • 反对的理由是什么
正如您所说,可以轻松复制此函数的行为。有什么问题吗

该页面甚至将其列为备选方案:

<?php
call_user_func(array($obj, $method_name), $parameter /* , ... */);
call_user_func(array(&$obj, $method_name), $parameter /* , ... */); // PHP 4
?>

至于为什么不赞成这样做

这是 因为
调用用户方法()
调用用户方法数组()
可通过以下方式轻松复制:

老路:
call_user_方法($func,$obj,“method”,“args”,“go”,“here”)

新方式:
call_user_func(数组(&$obj,“method”)、“method”、“args”、“go”、“here”)

就我个人而言,我可能会赞同Chad发布的变量建议。

你可以使用,这在我看来是最干净的。而不是:

call_user_func(array($obj, $method_name), $parameter);
你可以:

$obj->{$method_name}($parameter);

这样做:

我在我的_construct()方法中使用了类似的东西

第一个参数:对象实例, 第二个参数:要调用的方法, 第三个参数:params

在测试方法或类是否也存在之前,请执行以下操作:

method_exists()
class_exists()

如果出现以下错误,请干杯: 警告:call\u user\u func()要求参数1为有效回调,第二个数组成员不是第X行C:\www\file.php中的有效方法 代码如下:

call_user_func(array($this, $method));
对$method name使用(字符串)声明

call_user_func(array($this, (string)$method));

问题是,您不知道将调用哪个函数,它是否有参数,它有多少参数,等等。我正在使用AMFPHP通过Flex和PHP进行通信,我正在构建一个网关调用程序,它将阻止我每次从Flex多次调用PHP。我需要实例和调用多个方法,我不知道Flex是否会提供参数,如果提供了参数,它将位于给定的数组中。PHP文档中关于
call\u user\u method
的弃用通知似乎应该指向
call\u user\u func
。可惜没有,我必须寻找答案=D
call_user_func(array($this, (string)$method));