Php WSO2不尊重XSD

Php WSO2不尊重XSD,php,soap,xsd,wso2,Php,Soap,Xsd,Wso2,在花了几个小时的时间使用它之后,我正接近一个实际开始使用WSO进行SOAP服务的点,但我遇到了一个令人不安的方面 首先是服务代码 class Order { /** * @var string */ public $item_name; /** * @var nonNegativeInteger */ public $amount; public function calcPrice() {

在花了几个小时的时间使用它之后,我正接近一个实际开始使用WSO进行SOAP服务的点,但我遇到了一个令人不安的方面

首先是服务代码

class Order
{
    /** 
     * @var string
     */
    public $item_name;

    /** 
     * @var nonNegativeInteger
     */
    public $amount;

    public function calcPrice()
    {   
        return (float)($this->amount * 5); 
    }   
}

/**
 * Service function getPrice
 *
 * @param object Order $Order
 * @return double $price
 */
function getPrice(Order $Order)
{
    return $Order->calcPrice();
}

// create service in WSDL mode
$service = new WSService(
        array(
            'bindingStyle' => 'rpc',
            'opParams' => array('getPrice' => 'MIXED'),

            // define the actions => operations map
            "actions" => array(
                "http://wsf.local/wsdl_generation/hacked_service.php/getPrice"
                    => "getPrice"),

            // define the class map
            "classmap" => array("Order" => "Order"),

            // define the operations map
            "operations" => array("getPrice" => "getPrice")));

// process client requests and reply 
$service->reply();
太好了,我怎么能输入提示命令类!让我们在WSDL上取一个峰值;WSDL是通过
service\u name.php?WSDL
方法生成的,因此WSO是通过上面的服务代码生成的

<xsd:complexType name="Order">
<xsd:sequence>
<xsd:element name="item_name" type="xsd:string"/>
<xsd:element name="amount" type="xsd:nonNegativeInteger"/>
</xsd:sequence>
</xsd:complexType>

现在看,更好的消息,;我们对通过服务订购对象所允许的值有一些严格的要求

因此,当我最终接受这个测试并前往SoapUI进行测试时,我为
项目名称
传递了一些任意值&一个类似于
金额
的数字,值为25,太棒了。当我尝试为amount传递无效的内容时,例如不是一个非负整数,WSO将强制转换为一个整数,对getPrice的调用将收到amount值为0的结果


如果我错了,请纠正我,但这不是XSD的要点,以防止无效值进入服务代码吗?我可以测试函数内部的值,但是在这里使用XSD有什么意义呢?有没有办法将WSO配置为在SimpleType无法验证时发送请求的错误响应?

@注意:我们使用了w/
SoapServer
进行了实验,能够获得所需的效果,但无法根据所需的属性进行验证。我发现SoapServer没有实现许多功能,但对WSO2的期望更高;震惊的是,它甚至不能处理最琐碎的例子!