【问题标题】:best way to fix inspection for soapclients in phpstorm修复phpstorm中soapclients检查的最佳方法
【发布时间】:2013-11-09 02:34:16
【问题描述】:

我正在使用 PHPStorm v3 并且有一些代码可以连接到某个 SOAP 服务。 (通过一个简单的 PHP SoapClient)没有任何问题。但是 PHPStorm 检查器找不到 WSDL 的可用方法,因此无法识别使用的方法:

$this->soap = new SoapClient('somewsdl url');
$issues = $this->soap->getIssuesFromJqlSearch($this->auth,
    'ticketId = '.$ticket->getId().'
    AND impId ~ "'.$currentImplementation->getIdentifier().'"', 1);

一切正常,但由外部 WSDL 提供的方法 'getIssuesFromJqlSearch' 突出显示并提到了一个未定义的方法...我如何“告诉”PHPStorm 应该/可以使用什么(或解释如何解析WSDL?)

【问题讨论】:

    标签: phpstorm


    【解决方案1】:

    您可以通过 Alt+Enterright arrow 菜单抑制对该语句的检查:

    【讨论】:

    • 但这不是我想要的……我想反过来看:定义一个 PS 可以理解的 WSDL,从而自动更正 typ0 的
    【解决方案2】:

    这并不完美,因为它不解析 WSDL,您必须手动完成,但在初始设置后可以正常工作。

    创建一个扩展原生SoapClient的类,并使用注解添加虚方法:

    /**
     * @method mixed getIssuesFromJqlSearch
     **/
    class VendorSpecific extends \SoapClient {}
    

    或者您可以自己生成这样的客户端,将所有方法实现为self::__soapCall() 的代理。请参阅我的SoapClient generator 以供参考。好处是它可以解析 WSDL,尽管并不完美。

    【讨论】:

    • 谢谢你会看到工作。只是创建一个手动存根确实“愚弄”了自动完成等。太糟糕了 PHPStorm 无法读取 WSDL 并从那里生成存根。我已经投票了一个功能请求以允许此功能 (youtrack.jetbrains.com/issue/WI-3616)
    • 您可以使用这样的项目从 WSDL 生成 PHP 类:wsdl2phpgenerator.github.io/wsdl2phpgenerator - 对我来说很好。它正在积极开发中。
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2013-10-12
    • 2010-10-12
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多