微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Laravel中的PHP类型提示

我想知道在方法参数中使用类型提示是否有任何区别,例如:

function xyz (UserRepository $repo)

并使用注释做同样的事情:

function xyz ($repo)
    /* @var UserRepository $repo */ 

解决方法:

使用type hint之类的

function xyz (UserRepository $repo)

是编译器将理解并作出反应的指令.这意味着,当您尝试传递非UserRepository的任何内容时,PHP将引发错误.

引用PHP手册:

Type declarations allow functions to require that parameters are of a certain type at call time. If the given value is of the incorrect type, then an error is generated: in PHP 5, this will be a recoverable Fatal error, while PHP 7 will throw a TypeError exception.

使用“注释”只是文档.这只是您的IDE和开发人员的一个提示.它在执行PHP时没有任何功能意义.用户将能够将他想要的任何内容传递给该功能,例如,

$somethingElse = new SomethingElse;
xyz($somethingElse);

这可以工作,但是当尝试访问属于UserRespository的$somethingElse上的方法时它会失败.使用类型提示,您可能会提前失败.

注意:我将注释放在引号中,因为它不是真正的注释,正如您从其他语言(如Java)所知道的那样. PHP从7.2开始没有注释.但是存在Userland实现.

喜欢真实的类型提示.

顺便说一下,这不是Laravel特有的东西.类型提示是本机PHP功能.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐