以下是该方案:
我有一个没有预定数量方法的课程。一些将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"
方法存在。
答案 0 :(得分:1)
if (substr($method,0,6) == "action") { }
if (substr($method,0,6) == "filter") { }
我只是检查关键字函数名称的前六个字符链。请注意 - 太多关键字会影响其性能。