我做一個遊戲,並來到部分實現在服務器端角色的能力。功能屬性和未定義的方法
所以我有一個數組來保存所有角色能力:
$abils = array();
和A類爲他們:
class Abil{
private $timing;
private $func;
public function __construct($time, $func){
global $abils;
$this->timing = $time;
$this->func = $func;
array_push($abils,$this);
}
public function trigger($time,$params){
if(preg_match('/^'.$this->timing.'$/',$time)) $this->func($params);
}
}
$time
是能力 「時機」,爲正則表達式。例如,\d\d-0
將成爲任何人的開始。
$func
是使用能力時運行的功能。
當達到一定的「時間」(例如,某人的回合開始),全球triggerAll()
功能將被用於觸發時機的各種能力:
function triggerAll($time,$params = NULL){
global $abils;
foreach($abils as $abil) $abil->trigger($time,$params);
}
但是,當triggerAll
被調用時,會產生一個致命的錯誤:
Fatal error: Call to undefined method Abil::func()
我懷疑這是由於$func
不是一個方法,但其擁有的功能屬性。任何解決方法?
這也已經工作:'$本 - > {$這個 - > FUNC}($ params)方法;' – nickb
@nick:當然不是。這對我來說沒有任何意義。 – Eric
@Eric - 當然?那麼,我會再次檢查 - [確切地說,它的工作原理](http://codepad.viper-7.com/iIZyei)。 – nickb