Zend Framework 2 - 实例化类

时间:2015-09-28 21:05:25

标签: class zend-framework

为什么在提供课程路径时必须提供前导反斜杠? [\ 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 ;;      }   }

谢谢!

1 个答案:

答案 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();

更简洁。这是命名空间的优点之一 - 它允许您在代码中使用较短的类名。