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 举报,一经查实,本站将立刻删除。