【发布时间】:2012-10-15 16:53:48
【问题描述】:
我在一个大型类中工作,该类是应用程序的骨干之一,我们称之为myClass。我需要为这个类创建一个新的公共方法,并让它接受一个变量数组,该数组调用我正在编写的函数的各个方法:my_new_iterative_function()... 从某种意义上说,我需要一个“类在一个类中”(javascript 很适合这个;)......我怎样才能实现以下目标,我迭代 $fallback_order 参数数组以更改调用这些方法的顺序,然后有一个默认顺序,执行如果$fallback_order 是默认参数中定义的假?
class myClass {
public function existing_app_method_1() {
// other code
}
public function existing_app_method_2() {
// other code
}
// large app-centric class with many more methods
public function my_new_iterative_function( array $fallback_order = false ) {
method_foo() {
// do stuff
}
method_bar() {
// do stuff
}
method_more_methods() {
// there are at least 5 of them in total
}
if ( $fallbackorder == false ):
method_foo();
method_bar();
else:
foreach ( $fallback_order as $index => $this_fallback ) {
$name = $this_fallback;
if ( $this_fallback == $name ):
$this->$name();
endif;
}
endif;
}
}
视图模板中的目标如下:
<div><?php $myClass->my_new_iterative_function( array( 'method_more_methods', 'method_bar', 'method_foo', ) ); ?></div>
编辑:修正了一些明显错误的逻辑
【问题讨论】:
-
它必须在哪个版本的 php 上工作?从 5.3 开始,您可以拥有 anonymous functions 和闭包。
-
我们假设 PHP 是最新版本