假设我有一堂课……
类主{ $prop1 = 2; $prop2 = 23; ... $prop42 = "什么"; 函数 __construct($arg_array) { foreach ($arg_array as $key => $val) { $this->$key = $val; } } }
说我创造和反对......
$attributes = array("prop1"=>1, "prop2"=>35235, "prop3"=>"test"); $o = new Main($attributes);
如果不由用户提供,则提供默认属性值是显而易见的。但是,如果我想对用户提供的对象属性值实施任意限制怎么办?如果我想强制$prop1
为int
,不小于 1,不大于 5 怎么办。并且,$prop42
类型string
,不小于 'A',不大于 'Z'?为此,使用任何可能的语言功能或技巧,使脚本尽可能简短和甜美,最干净的方法是什么?
我被困在__construct()
根据这样构建的规则数组检查提供的值...
$allowable = 数组( “prop1” => 数组( '类型' => 'int', 'allowable_values' => 数组( '分钟' => 1, '最大' => 5 ) ), “prop2” => 数组( '类型' => 'int', 'allowable_values' => 数组( 1、 235, 37, 392, 13, 409, 3216 ) ), ... “prop42” => 数组( '类型' => '字符串', 'allowable_values' => 数组( 'min' => 'A', '最大' => 'Z' ) ) );
正如您所看到的prop2
,我的验证功能开始变得非常混乱,因为我不仅要考虑范围,还要考虑允许值的列表。使用验证代码和这个规则数组,我的脚本变得相当庞大。
问题是,我如何构建我的类或类属性或验证代码或脚本的任何其他方面,使其尽可能简短,以允许属性范围和值强制执行?是否有语言功能或技巧可以更优雅地处理这个问题?我是否已经到达了一堵砖墙,这种语言的极限?是否有其他语言的示例可以轻松实现这一点,可以提供一些线索?