如何 code/reference 为我的 IDE 易于管理的 PHP 可调用函数
How to code/reference to a PHP callable functions easy to manage for my IDE
当我必须编写对可调用函数的引用时,我使用 PHP defined as:
的标准语法
A PHP function is passed by its name as a string. Any built-in or user-defined function can be used [... omitted...].
A method of an instantiated object is passed as an array containing an object at index 0 and the method name (aka string)
at index 1.
Static class methods can also be passed without instantiating an object of that class by passing the class name (still a string)
instead of an object at index 0.
As of PHP 5.2.3, it is also possible to pass (the string) 'ClassName::methodName'.
Apart from common user-defined function, anonymous functions can also be passed to a callback parameter.
所有这些方法都不是 "IDE friendly" 用于 函数名重构 或 查找 .[=15 的用法等操作=]
在我的回答中,我提出了一个解决方案,但还有其他方法可以应用,甚至完全不同,允许 IDE 到 "find" 方法的调用?
我找到了一个解决方案,总是基于 anonymous-functions 解决了问题但让我不完全满意:
class
的静态方法
$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 版本的替代品
在你要调用的所有 classess 中(或在它们的父类中)定义函数 classname() 如下:
public static function className()
{
return get_called_class();
}
或 非常 旧 PHP:
public static function className()
{
return "MyClass";
}
然后
call_user_func(array(MyClass::className(), 'myCallbackMethod'));
您已经接近可以做的最短的事情了
你可以完美地直接在你的函数调用中调用你的匿名函数,而无需使用变量
例如,您可以替换:
$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);
你将不得不等待 arrow functions 未来的 PHP 版本,你应该可以使用类似的东西:
call_user_func(fn($a) => $object->myMethod($a), $param);
当我必须编写对可调用函数的引用时,我使用 PHP defined as:
的标准语法A PHP function is passed by its name as a string. Any built-in or user-defined function can be used [... omitted...].
A method of an instantiated object is passed as an array containing an object at index 0 and the method name (aka string) at index 1.
Static class methods can also be passed without instantiating an object of that class by passing the class name (still a string) instead of an object at index 0.
As of PHP 5.2.3, it is also possible to pass (the string) 'ClassName::methodName'.
Apart from common user-defined function, anonymous functions can also be passed to a callback parameter.
所有这些方法都不是 "IDE friendly" 用于 函数名重构 或 查找 .[=15 的用法等操作=]
在我的回答中,我提出了一个解决方案,但还有其他方法可以应用,甚至完全不同,允许 IDE 到 "find" 方法的调用?
我找到了一个解决方案,总是基于 anonymous-functions 解决了问题但让我不完全满意:
class
的静态方法$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 版本的替代品
在你要调用的所有 classess 中(或在它们的父类中)定义函数 classname() 如下:
public static function className()
{
return get_called_class();
}
或 非常 旧 PHP:
public static function className()
{
return "MyClass";
}
然后
call_user_func(array(MyClass::className(), 'myCallbackMethod'));
您已经接近可以做的最短的事情了
你可以完美地直接在你的函数调用中调用你的匿名函数,而无需使用变量
例如,您可以替换:
$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);
你将不得不等待 arrow functions 未来的 PHP 版本,你应该可以使用类似的东西:
call_user_func(fn($a) => $object->myMethod($a), $param);