为什么在提供课程路径时必须提供前导反斜杠? [\ Zend \ Validator \ EmailAddress()而不仅仅是Zend \ Validator \ EmailAddress()]
$ validator = new \ Zend \ Validator \ EmailAddress();
$ email =" example@example.com" ;;
if($ validator-> isValid($ email)){ //电子邮件似乎有效 } else { //电子邮件无效;打印原因 foreach($ validator-> getMessages()as $ messageId => $ message){ echo"验证失败' $ messageId':$ message \ n&#34 ;; } }
谢谢!
答案 0 :(得分:1)
你说你已经在课程开始时声明了Blog\Controller
的名称空间,其中包含:
namespace Blog\Controller
这告诉PHP默认情况下,该类中引用的所有类都在Blog\Controller
命名空间内。所以如果你那么做:
$validator = new Zend\Validator\EmailAddress();
你实际在做的是:
$validator = new Blog\Controller\Zend\Validator\EmailAddress();
因为该类不存在而会给你一个错误。
如果在前面添加反斜杠的类,则告诉PHP该类不在您声明的命名空间中,而是在全局空间中,这就是它起作用的原因。
您还说过您使用EmailAddress
导入了use Zend\Validator\EmailAddress
课程。这允许您将该类引用为“EmailAddress”。因此,您将代码更改为:
$validator = new EmailAddress();
更简洁。这是命名空间的优点之一 - 它允许您在代码中使用较短的类名。