根据命名约定区分类中的方法?

时间:2013-04-10 17:51:06

标签: php class methods

以下是该方案:

我有一个没有预定数量方法的课程。一些将function actionName而其他人将被调用function filterName,其中"filter""action"将定义它们的方法类型,"Name"可以是任何类型。

在我的__construct()我想:

$methods = get_class_methods($this);

foreach ( $methods as $method ) {

  if ( $method == 'action' )
    $this->DoSomething( $this->{$method}() );

  if ( $method == 'filter' )
    $this->DoSomethingElse( $this->{$method}() );

}

如何在不使用任何类型的字符串或reg表达式的情况下实现此目的?

我也愿意使用get_class_methods()的替代方案。但请记住,我永远不会知道有多少"action""filter"方法存在。

1 个答案:

答案 0 :(得分:1)

if (substr($method,0,6) == "action") { }

if (substr($method,0,6) == "filter") { }

我只是检查关键字函数名称的前六个字符链。请注意 - 太多关键字会影响其性能。