这不是一个真正流畅的界面.我有一个构建方法堆栈的对象.哪个由单个函数调用执行.但现在我可能会添加另一个虚拟方法,它"接管"该方法堆栈.
使用案例:我将超级全球包裹在物体中.这允许我"强制"输入过滤.$ _GET和co提供简单的消毒方法.而我的新版本现在允许链接原子过滤器.例如:
$_GET->ascii->nocontrol->text["field"]
Run Code Online (Sandbox Code Playgroud)
这是一个方法调用.它使用尖括号.但这只是一个很好的技巧,可以简化重写任何内容$_GET["field"].无论如何.
现在偶尔也有枚举字段的形式,如字段[0],字段[1],字段[2].这就是为什么我添加了一个虚拟 - >数组过滤方法.它劫持了收集的方法堆栈,并在例如$ _POST数组值上迭代剩余的过滤器.例如$_POST->array->int["list"].
实施有些缩短:
function exec_chain ($data) {
...
while ($filtername = array_pop($this->__filter)) {
...
$data = $this->{"_$filtername"} ($data);
...
}
function _array($data) {
list($multiplex, $this->__filter) = array($this->__filter, array());
$data = (array) $data;
foreach (array_keys($data) as $i) {
$this->__filter = $multiplex;
$data[$i] = $this->exec_chain($data[$i]);
}
return $data;
}
Run Code Online (Sandbox Code Playgroud)
方法堆栈在$this->__filter列表中组装.上面的exec_chain()只是循环遍历它,每次删除第一个方法名称.虚拟_array处理程序通常是第一种方法.它只是窃取了方法堆栈,并重新执行每个数组元素的余数.与上面的示例代码不完全相同,但它只是重复地重新填充原始方法堆栈.
有用.但感觉有点不干净.我正在考虑添加另一个虚拟方法->xor.(YAGNI?)哪个不会迭代字段,而是评估备用过滤器是否成功.例如$_REQUEST->array->xor->email->url["fields"].我想知道是否有更好的劫持功能列表模式.我当前的钩子列表($ this - > __ filter)交换不适合链接.嗯,实际上, - > xor示例不需要迭代/表现完全像 - >数组.
所以具体来说,我有兴趣找到一个替代我的$ this - > __过滤器列表用于array_pop()和偷偷摸摸的交换它.这是不好的.是否有更好的实施方案来执行方法列表的一半我 - >半部分你?
我之前制作过类似的链接接口,我喜欢你在 GET/POST 变量上使用它的想法。
我认为你做类似的事情会更好
$var->数组->email_XOR_url;而不是
$var->数组->电子邮件->异或->url;。这样你就可以用 __get/__call 魔法捕捉各种组合。
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |