包 | system.web.services |
---|---|
继承 | class CWsdlGenerator » CComponent |
源自 | 1.0 |
版本 | $Id: CWsdlGenerator.php 2799 2011-01-01 19:31:13Z qiang.xue $ |
源码 |
CWsdlGenerator是一个给定的服务类生成WSDL。
WSDL的生成是基于服务类文件中的文档注释。 特别是,它认识注释的‘@Soap’标记it,并提取物API 方法和类型定义。
在服务类中,一个远程调用的方法必须是公共方法与doc 注释块包含‘@soap’标记。在文档注释,类型和名称 每一个输入参数和返回值的类型应使用 标准phpdoc格式。
CWsdlGenerator识别以下的原始类型(区分大小写) 参数和返回类型声明:
如果类型不是一个原始类型,它被认为是一个类类型, CWsdlGenerator将寻找其属性声明。只考虑公共属性, 它们各自关联到包含着‘@soap’标签的 doc注释块。doc注释块应该声明属性的类型。
CWsdlGenerator识别以下格式的数组类型:
下面是声明一个远程调用方法的示例:
以下是声明一个类与远程访问的属性的例子:
WSDL的生成是基于服务类文件中的文档注释。 特别是,它认识注释的‘@Soap’标记it,并提取物API 方法和类型定义。
在服务类中,一个远程调用的方法必须是公共方法与doc 注释块包含‘@soap’标记。在文档注释,类型和名称 每一个输入参数和返回值的类型应使用 标准phpdoc格式。
CWsdlGenerator识别以下的原始类型(区分大小写) 参数和返回类型声明:
- str/string:对应于xsd:string;
- int/integer:对应于xsd:int;
- float/double:对应于xsd:float;
- bool/boolean:对应于xsd:boolean;
- date:对应于xsd:date;
- time:对应于xsd:time;
- datetime:对应于xsd:dateTime;
- array:对应于xsd:string;
- object:对应于xsd:struct;
- mixed:对应于xsd:anyType。
如果类型不是一个原始类型,它被认为是一个类类型, CWsdlGenerator将寻找其属性声明。只考虑公共属性, 它们各自关联到包含着‘@soap’标签的 doc注释块。doc注释块应该声明属性的类型。
CWsdlGenerator识别以下格式的数组类型:
typeName[]:对应于tns:typeNameArray
下面是声明一个远程调用方法的示例:
/ ** * foo方法。 * @param string 名字 * @param string 值 * @return string[] 一些数组 * @soap * / public function foo($name,$value) {...}
以下是声明一个类与远程访问的属性的例子:
class Foo { / ** * @var string name of foo * @soap * / public $name; / ** * @var Member[] members of foo * @soap * / public $members; }上面的‘members’属性是‘Member’对象的数组。由于‘Member’不是一个原始类型, CWsdlGenerator会重复查找,找出‘Member’的定义。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
namespace | string | 用来生成WSDL的命名空间。 如果不设置, 默认为是生成的WSDL的类的名字。 | CWsdlGenerator |
serviceName | string | 生成的WSDL的名字。 如果不设置,默认为”urn:{$className}wsdl“。 | CWsdlGenerator |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
generateWsdl() | 为指定的类生成WSDL。 | CWsdlGenerator |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
属性详细
namespace
属性
public string $namespace;
用来生成WSDL的命名空间。 如果不设置, 默认为是生成的WSDL的类的名字。
serviceName
属性
public string $serviceName;
生成的WSDL的名字。 如果不设置,默认为”urn:{$className}wsdl“。
方法详细
generateWsdl()
方法
public string generateWsdl(string $className, string $serviceUrl, string $encoding='UTF-8')
| ||
$className | string | 类名字。 |
$serviceUrl | string | Web service的URL |
$encoding | string | WSDL的编码。默认为‘UTF-8’。 |
{return} | string | 生成的WSDL |
public function generateWsdl($className, $serviceUrl, $encoding='UTF-8')
{
$this->_operations=array();
$this->_types=array();
$this->_messages=array();
if($this->serviceName===null)
$this->serviceName=$className;
if($this->namespace===null)
$this->namespace="urn:{$className}wsdl";
$reflection=new ReflectionClass($className);
foreach($reflection->getMethods() as $method)
{
if($method->isPublic())
$this->processMethod($method);
}
return $this->buildDOM($serviceUrl,$encoding)->saveXML();
}
为指定的类生成WSDL。