链式PHP控件

Ari*_*ona 1 php

我正在制作一个表单验证类,它目前的工作方式与此类似.

$validator->setVar($_POST['Username'])
          ->standardFilter(array('XSS', 'SQL_INJECTION'))
          ->customRegex()
          ->replace('This', 'With this')
          ->getResult();
Run Code Online (Sandbox Code Playgroud)

虽然它在链接时效果很好,但我无法达到以下结果.

$validator->setVar($_POST['Username'])
          ->isValidEmail()
          ->isValidPhoneNumber()
          ->isSet()
          ->isNull()
          ->getResult()
Run Code Online (Sandbox Code Playgroud)

例如,脚本返回以下值

->isValidEmail() (true)
->isValidPhoneNumber() (true)
->isSet() (false)
Run Code Online (Sandbox Code Playgroud)

基本上,我将创建一个数组,根据每个函数的结果用true/false填充它,我将在数组中查找特定值(false).如果存在,则无论其他链如何,该类都将返回false.(或者我可以覆盖变量,这里不重要.)

但是,我希望$ validator一旦从函数中获取错误就停止链接.假设它从isSet()收到错误.它不应该执行isNull()和getResult(),因为我们已经有一个失败的检查.

我怎样才能在PHP中实现这一目标?

TL; DR:

var_dump($validator->setVar('Test message')->isInteger()->setTrue());
                                             //false     //true

Output: false, because once isInteger() failed, rest of the chain isn't executed.
Run Code Online (Sandbox Code Playgroud)

我怎样才能在PHP中实现这一目标?

fic*_*scr 5

没有什么比学习好的源代码更好的了.我建议探索Zend Framework的Validation类.它提供了您描述的相同链接功能.

... 更多源代码检查isValid()具体.