天道酬勤,学无止境

nullsafe

PHP中是否有“ nullsafe运算符”?(Is there a “nullsafe operator” in PHP?)

问题 有什么方法可以使用某种安全的导航运算符编写以下语句? echo $data->getMyObject() != null ? $data->getMyObject()->getName() : ''; 这样看起来像这样: echo $data->getMyObject()?->getName(); 回答1 从PHP 8开始,您可以使用null安全运算符,该运算符与null合并运算符结合使用可以编写如下代码: echo $data->getMyObject()?->getName() ?? ''; 通过使用?->而不是->终止运算符链,结果将为null。 “在对象内部看”的运算符被视为链的一部分。 数组访问([]) 属性访问(->) Nullsafe属性访问(?->) 静态属性访问(::) 方法调用(->) 空安全方法调用(?->) 静态方法调用(::) 例如代码: $string = $data?->getObject()->getName() . " after"; 如果$ data为null,则该代码等效于: $string = null . " after"; 由于字符串串联运算符不是“链”的一部分,因此也不会短路。 回答2 不,那里没有。 解决此问题的绝对最佳方法是设计对象,使其始终返回特定类型的已知的,良好的,已定义的值。 在绝对不可能的情况下,您必须执行以下操作:

2021-03-26 11:54:13    分类:技术分享    php   operators   chaining   php-8   nullsafe

Is there a “nullsafe operator” in PHP?

Is there any way to write the following statement using some kind of safe navigation operator? echo $data->getMyObject() != null ? $data->getMyObject()->getName() : ''; So that it looks like this: echo $data->getMyObject()?->getName();

2021-03-21 23:49:21    分类:问答    php   operators   chaining   php-8   nullsafe