【问题标题】:Is there any tool for sorting PHP class methods by name in code? [closed]是否有任何工具可以在代码中按名称对 PHP 类方法进行排序? [关闭]
【发布时间】:2013-02-19 09:18:09
【问题描述】:

我想知道是否有任何工具可以对 PHP 代码进行排序(确切地说,是按名称排序的类的方法)。我用谷歌搜索了一段时间,但没有找到任何东西。

已编辑:我有很多混合的 setter 和 getter 方法,我想订购它们以提高代码可读性并更容易找到它们。当然,我更喜欢将相关方法分组,而不是按字母顺序对所有方法进行排序,但在每个组中,我更喜欢按这种方式排序。

【问题讨论】:

  • 有:剪切/粘贴。 ;)
  • 好吧,我会咬的。 Fot上帝的爱:为什么!?
  • 相对论已经过时了,但应该为您指明正确的方向stackoverflow.com/questions/19758/… 我个人认为没有必要。
  • 我有很多混合的 setter 和 getter 方法,我想订购它们以提高代码的可读性并更容易找到它们

标签: php netbeans ide coding-style


【解决方案1】:

您不想在文件本身中按字母顺序排列您的类方法。当属于一起的方法彼此靠近时,代码更容易阅读:

密切相关的概念应保持垂直靠近 [G10] [...] 我们希望避免强迫读者在我们的源文件和类中跳来跳去

来自 Martin,清洁代码,“垂直距离”,第 1 页。 80

如果您需要按字母顺序查看它们,请改用 IDE 的动态视图。在 Netbeans 中,这称为类大纲视图。请参阅 Where is the "class outline view" in Netbeans for PHP? 了解如何启用此功能。

如果您出于某种原因迫切希望使用 PHP 来执行此操作,您可以使用 Reflection API

// get all the methods
$reflector = new ReflectionClass('Foo');
$methods = $reflector->getMethods();

// sort methods alphabetically
usort($methods, function($method1, $method2) {
    return strcasecmp($method1->getName(), $method2->getName());
});

print_r($methods);

这将为您提供一个按方法名称排序的 ReflectionMethod 对象数组。

【讨论】:

  • 是的,我知道 Netbeans 可以在其中一个视图面板中执行此类任务,并且我仍然想将相关方法放在一起,我只想对一些方法“组”进行排序,而无需复制/粘贴。
  • @xaguilars 好吧,就像我说的,如果只是为了以某种方式显示它们,您可以使用反射。反射 API 也将是重写源文件的基础,但它需要一些努力并且不可靠,因为可以编写任意性质的源代码。这可能不值得付出努力。下次您需要为其他内容修改文件时,只需手动重新排列代码即可。
  • 我觉得像你说的那样努力不值得。谢谢。
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2010-12-06
  • 2012-06-05
  • 2013-11-08
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多