我有一个问题,我正在尝试使用标准的PHP SoapClient访问SoapServer上的方法.问题是SoapServer上的方法列出了两次,名称相同,但操作不同.
例如:SOAP UI显示GetStockQuote和GetStockQuote两次列出,但第二个GetStockQuote实际上将调用GetStockQuoteV2.
但是我的PHP SoapClient,如果我调用$ client-> GetStockQuote,它会自动调用第一个.根据我的研究,我必须做这样的事情.
$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2'));
Run Code Online (Sandbox Code Playgroud)
但是当我处于wsdl模式时,它仍然调用GetStockQuote而不是GetStockQuoteV2.
我的结论是,我必须以非wsdl模式运行并处理其中的烦恼.当处于非wsdl模式时,上面的__soapCall似乎正在调用正确的方法,但由于我处于非wsdl模式,我认为构建服务器所需的相应AuthHeader存在问题.
我的问题是,我可以在PHP SoapClient wsdl模式下重新映射soap操作吗?
使用 Paypal 的沙箱,我正在测试 REST API 以了解它是如何工作的,到目前为止,它是比经典 API 更酷、更干净的解决方案。
我的问题是 REST 付款不会触发我的 IPN 侦听器。
付款从我的沙盒个人帐户中出来并进入我的沙盒企业帐户。IPN 侦听器是通过沙箱业务帐户配置的,当我在 Paypal 开发人员网站上使用 IPN 测试器时,它可以工作。
但是,当我通过 REST API 调用运行付款时,IPN 不会被触发。
REST API 是否不支持此功能?
我在一个项目中使用Monolog,它不是Symfony,只是我自己的应用程序使用独立的Monolog组合器包.
我想做的是以编程方式关闭调试日志.我正在写一个日志文件,我正在使用Monolog :: StreamHandler.我正在使用从配置文件获取调试值的Configuration类来控制应用程序是否处于调试模式.因此,当有人将该值更改为调试为false时,调试日志记录应该关闭.
我觉得最简单的方法是扩展StreamHandler并覆盖StreamHandler的write方法.
class DurpLogger extends StreamHandler {
protected function write(array $record) {
if ($this->getLevel() == Durp::Debug && !Configuration::debug()) {
return;
}
parent::write($record);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果日志请求进入并且处理程序的日志级别设置为DEBUG且应用程序的Configuration :: debug()为FALSE,则只返回而不写入日志消息.否则,StreamHandler会做它的事情.
我想知道这是否是使用Monolog的最佳方式,或者是否有更简洁的方法可以做到这一点.
我设想在我的应用程序中有一个处理程序,用于DEBUG,INFO,ERROR以及我的应用程序可能需要的任何级别.也许有理由不依赖于只能为TRUE或FALSE的Configuration :: debug(),而是依赖于Configuration :: logLevel(),这将允许我更精细地控制日志记录输出.
但即便如此,在应用程序级别控制Monolog时,扩展StreamHandler是否最有意义?
UPDATE
现在,我在想这样的事情,它使用的是水平而不仅仅是布尔调试.
class DurpLogger extends StreamHandler {
public function __construct() {
parent::__construct(Configuration::logFile(), Configuration::logLevel());
}
protected function write(array $record) {
if (!($this->getLevel() >= Configuration::logLevel())) {
return;
}
parent::write($record);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我会在这样的应用程序中使用它.
class Durp {
private $logger;
public function __construct() {
$this->logger = new Logger('durp-service'); …Run Code Online (Sandbox Code Playgroud)