I think you should declare static methods and variables as such if you want to use them in that context. I know that you don’t have to do that in PHP but it makes it a lot easier to read and maybe this is the cause of this error. For example: I don’t quite get why you are using EClass::setEffect() and use a $this context in setEffectOptions() meaning that it is usable by an object ONLY, not by the class.
So you either make EClass static and use
public STATIC function setEffectOptions()
and define your variables as static too (public static $validEffects) or you could use objects to use methods and variables like this