2 回答

TA贡献1829条经验 获得超4个赞
随着即将到来的 PHP 8,nullsafe_operator将被实现,如果其中一个调用返回 null,则允许对一系列调用进行断路
$result = $o->returnNull()?->doSomething()
$results === null // True

TA贡献1828条经验 获得超6个赞
此答案适用于早于 8.0.0 的 PHP 版本。对于 PHP 8.0.0 及更高版本,请参阅 Maks3w 答案
简短的回答:不,PHP中没有这样的东西。
我会避免,不惜一切代价,做魔术,就像你建议的那样。
行为:
<?php
public static function getDependency($path) {
$container = self::container();
if ($container instanceof ContainerInterface) {
return $container->get($path);
}
}
会更容易阅读/理解。
现在,关于,它已被自己的创造者(托尼·霍尔)描述为“十亿美元的错误”。null
更好的方法是作为返回类型,而不可能是。试图返回一个,它会抛出一个,可能会被抓住。这样,对 的调用将永远不会发生,因为异常将之前被抛出。self::container()ContainerInterfacenullnullTypeError->get()
允许返回类似的东西将导致所有调用方实现您建议的逻辑,这也会导致(大量)重复的代码。self::container()ContainerInterface|null
出于同样的原因,为依赖项指定特定的返回类型可能会更安全:
<?php
public static function getServiceFoo($path): ServicFoo {
$container = self::container();
if (!$container instanceof ContainerInterface) {
throw new RuntimeException("Not a valid container received");
}
return $container->get($path);
}
否则,您将面临与 上已经存在的相同的问题。getServiceFoo()self::container()
- 2 回答
- 0 关注
- 114 浏览
添加回答
举报