用于在重载类属性时验证setter的php最佳实践

时间:2010-10-01 14:47:55

标签: php validation overloading

我有一个使用__set魔术方法的类。该类的一个属性只能设置为一定范围的字符串值,我能想到的最好的例子是mysql数据类型ENUM('value_one','value_two','value_three')。

我是否会在__set方法中放置条件语句来区分正在设置的属性以及该值是否对该属性有效?

__set方法中的大型switch语句是否被视为草率实践,是否是产生预期结果的更好方法?

谢谢, 本

2 个答案:

答案 0 :(得分:0)

__set函数可以检查名为presetVariableName的方法的存在性,该方法被调用并将新值作为参数传递。

然后该函数可以执行验证逻辑,并返回truefalse是否有效。

答案 1 :(得分:0)

  

我会放置条件语句吗?   在__set方法内区分   在哪个属性之间设置   以及该值是否有效   那个属性?

第一部分是,第二部分是否。

  

是否有大型的switch语句   __set方法考虑马虎的做法,是他们更好的方法   产生预期的结果?

您的__set方法应确定尝试设置哪个变量,然后将其余功能传递给私有设置器setParticularVar。然后setParticularVar将包含特定于验证该变量的逻辑,并且如果传递了无效值,则可以抛出异常。

或者,你可以改为公开私有的setter,允许两种方式设置变量,但这不是理想的,因为设置值的两种方法并不像设计那么干净。