如何删除静音错误是 magento 2 中不鼓励的错误?

How to remove silencing errors is descouraged error from magento 2?

我已经为 magento 2.3 中的 SSO 编写了代码,并为处理来自不同 IDP(如 okta、keycloak)的响应编写了以下代码:

 if(!(@$xpath->query('/saml2p:Response',$xml))) {

            $status = SAML2Utilities::xpQuery($xml, './samlp:Status/samlp:StatusCode');   
}
        else{

           $status = SAML2Utilities::xpQuery($xml, './saml2p:Status/saml2p:StatusCode');   
}

我的代码工作正常,我可以通过不同的 IDP 登录,但是当我检查 php magento 2 的编码标准时,出现以下错误: 'Silencing errors is discouraged; found: @$xpath->query... ' 如何解决?

在 PHP 中,可以使用 @ 运算符消除错误。在您的代码中,您有:

if(!(@$xpath->query('/saml2p:Response',$xml))) {

所以你在 $xpath->query 之前有一个 @。如果您删除 @,则在检查编码标准时将不会显示该错误。

有关隐藏错误的更多信息,您可以查看 PHP Documentation

更新:

删除 @ 可能会导致问题,就好像发生错误会停止代码执行一样。您要么需要使用 try catch 处理错误,要么进行检查,例如检查变量是否为 null、空等。