首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为IDE编写易于管理的PHP可调用函数的代码/引用

如何为IDE编写易于管理的PHP可调用函数的代码/引用
EN

Stack Overflow用户
提问于 2015-12-03 20:53:04
回答 2查看 647关注 0票数 16

当我必须编写一个对可调用函数的引用时,我会使用PHP defined as的标准语法

PHP函数是通过其名称作为字符串传递的。任何内置或用户定义的函数都可以使用...省略...

实例化对象的方法作为一个数组传递,该数组包含索引0处的对象和索引1处的方法名称(也称为字符串)。

通过传递名为(仍然是字符串)的类而不是索引为0的对象,也可以传递静态类方法,而不是实例化该类的对象。

从PHP5.2.3开始,也可以传递(字符串) 'ClassName::methodName'.

除了常见的用户定义函数外,匿名函数也可以传递给回调参数。

所有这些方法对于像函数名重构或查找用法这样的操作都不是"IDE友好的“。

在我的回答中,我提出了一个解决方案,但还有其他方法可以应用,甚至是完全不同的,允许IDE“找到”方法的调用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 19:12:45

你已经接近你能做的最短的事情了

您可以在函数调用中直接调用匿名函数,而无需使用变量

例如,您可以替换:

代码语言:javascript
复制
$callable=function($param) use ($object){ 
   return $object->myMethod($param); 
}
call_user_func($callable, $param);

出自:

代码语言:javascript
复制
call_user_func(function($param) use ($object){ 
   return $object->myMethod($param); 
}, $param);

在未来的PHP版本中,您将不得不等待arrow functions,并且您应该能够使用如下内容:

代码语言:javascript
复制
call_user_func(fn($a) => $object->myMethod($a), $param);
票数 10
EN

Stack Overflow用户

发布于 2015-12-03 22:05:12

我找到了一个解决方案,总是基于解决问题的anonymous-functions,但不能让我完全满意:

类的静态方法

代码语言:javascript
复制
$callable = function($param){ 
    return \my\namespace\myClass::myMethod($param); 
}

object方法

代码语言:javascript
复制
$callable = function($param) use ($object){ 
    return $object->myMethod($param); 
}

$this object方法

代码语言:javascript
复制
$callable = function($param){ 
    return self::myMethod($param); 
}

最早的php版本的替代方案

在要调用的所有类中(或在它们的父类中)定义函数classname(),如下所示:

代码语言:javascript
复制
public static function className()
{
    return get_called_class();
}

或者对于非常老的PHP:

代码语言:javascript
复制
public static function className()
{
    return "MyClass";
}

然后

代码语言:javascript
复制
call_user_func(array(MyClass::className(), 'myCallbackMethod')); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34066607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档