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

Posted

技术标签:

【中文标题】如何为我的 IDE 编写/引用易于管理的 PHP 可调用函数【英文标题】:How to code/reference to a PHP callable functions easy to manage for my IDE 【发布时间】:2016-03-08 02:28:24 【问题描述】:

当我必须编写对可调用函数的引用时,我使用 php defined as 的标准语法:

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

实例化对象的方法作为数组传递,其中包含索引 0 处的对象和 方法名称 (又名字符串) 在索引 1。

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

从 PHP 5.2.3 开始,也可以传递 (字符串) 'ClassName::methodName'

除了普通的自定义函数外,匿名函数也可以传入回调参数。

对于函数名重构查找用法等操作,所有这些方式都不是“IDE友好”的。

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

【问题讨论】:

【参考方案1】:

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

你可以直接在你的函数调用中完美地调用你的匿名函数而不使用变量

例如,您可以替换:

$callable=function($param) use ($object) 
   return $object->myMethod($param); 

call_user_func($callable, $param);

作者:

call_user_func(function($param) use ($object) 
   return $object->myMethod($param); 
, $param);

在未来的 PHP 版本中,您将不得不等待 arrow functions,并且您应该能够使用类似的东西:

call_user_func(fn($a) => $object->myMethod($a), $param);

【讨论】:

【参考方案2】:

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

类的静态方法

$callable = function($param) 
    return \my\namespace\myClass::myMethod($param); 

对象的方法

$callable = function($param) use ($object) 
    return $object->myMethod($param); 

$this 对象的方法

$callable = function($param) 
    return self::myMethod($param); 


旧 php 版本的替代方案

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

public static function className()

    return get_called_class();

或者对于 非常 旧的 PHP:

public static function className()

    return "MyClass";

然后

call_user_func(array(MyClass::className(), 'myCallbackMethod')); 

【讨论】:

以上是关于如何为我的 IDE 编写/引用易于管理的 PHP 可调用函数的主要内容,如果未能解决你的问题,请参考以下文章

当其中一个是本地引用时,如何为类型约束中的引用编写生命周期?

如何为我的 php web 应用程序提供桌面通知? [复制]

如何为 Python 配置 arduino ide?

如何为 RVDS 3.0 的 Code Warrior IDE (v5.7) 构建 Boost 库?

如何为 VS Express 版本编写 SourceControl 插件 [关闭]

如何为URL编写正则表达式