CWebServiceAction
优质
小牛编辑
142浏览
2023-12-01
所有包 | 属性 | 方法
CWebServiceAction实现一个提供Web服务的动作。
CWebServiceAction服务有两个目的。一方面, 它显示WSDL中指定的Web服务API的内容。另一方面,它调用请求的Web service API。一个GET参数名为
默认情况下,CWebServiceAction将使用当前控制器 作为Web service提供者。参见CWsdlGenerator如何声明 可以远程调用的方法。
请注意,PHP SOAP扩展对于这一动作是必需的。
源码: framework/web/services/CWebServiceAction.php#128 (显示)
源码: framework/web/services/CWebServiceAction.php#115 (显示)
源码: framework/web/services/CWebServiceAction.php#84 (显示)
包 | system.web.services |
---|---|
继承 | class CWebServiceAction » CAction » CComponent |
实现 | IAction |
源自 | 1.0 |
版本 | $Id: CWebServiceAction.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 | framework/web/services/CWebServiceAction.php |
CWebServiceAction服务有两个目的。一方面, 它显示WSDL中指定的Web服务API的内容。另一方面,它调用请求的Web service API。一个GET参数名为
ws
, 用来区分这两个方面:GET参数的存在 指示执行后者的行动。默认情况下,CWebServiceAction将使用当前控制器 作为Web service提供者。参见CWsdlGenerator如何声明 可以远程调用的方法。
请注意,PHP SOAP扩展对于这一动作是必需的。
公共属性
隐藏继承属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
classMap | array | 在WSDL中声明复杂类型的PHP类的列表。 这应该是一个WSDL类型作为键和名称作为值的PHP类的数组。 一个PHP类,也可以指定一个路径别名。 | CWebServiceAction |
controller | CController | 拥有这个动作的控制器。 | CAction |
id | string | 动作的ID。 | CAction |
provider | mixed | Web service提供者的对象或者类名。 如果指定一个类名,它可以是一个路径别名。 默认为null,这意味着当前控制器是作为服务提供者。 如果提供者实现了接口IWebServiceProvider, 这将是能够拦截远程方法调用,并执行额外的任务 (如验证,写日志)。 | CWebServiceAction |
service | CWebService | 返回目前正在使用的Web服务实例。 | CWebServiceAction |
serviceOptions | array | 为CWebService对象初始属性值。 数组键是CWebService的属性名称, 数组中的值是相应的属性的初始值。 | CWebServiceAction |
serviceUrl | string | Web service的URL。默认为null,这意味着 这个动作的URL是用来提供Web服务。 在这种情况下,一个命名为serviceVar的GET参数 将被用来确定当前请求是否是WSDL或Web服务的。 | CWebServiceAction |
serviceVar | string | GET参数的区别从一个Web服务请求的 WSDL请求的名称。如果存在这个GET参数,请求被认为是作为一个Web服务请求, 否则,它是一个WSDL请求。默认为“ws”。 | CWebServiceAction |
wsdlUrl | string | WSDL的URL。默认为null,这意味着 这个动作的URL是用来服务的WSDL文档。 | CWebServiceAction |
公共方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | 构造方法。 | CAction |
__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 |
getController() | 返回拥有这个动作的控制器。 | CAction |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getId() | 返回动作的ID。 | CAction |
getService() | 返回目前正在使用的Web服务实例。 | CWebServiceAction |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
run() | 执行动作。 | CWebServiceAction |
runWithParams() | 运行带有请求参数的对象。 | CAction |
受保护方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
createWebService() | 创建CWebService实例。 | CWebServiceAction |
runWithParamsInternal() | 执行一个带有命名参数的对象的方法。 | CAction |
属性详细
classMap 属性 public array $classMap;在WSDL中声明复杂类型的PHP类的列表。 这应该是一个WSDL类型作为键和名称作为值的PHP类的数组。 一个PHP类,也可以指定一个路径别名。
参见
- http://www.php.net/manual/en/soapclient.soapclient.php
Web service提供者的对象或者类名。 如果指定一个类名,它可以是一个路径别名。 默认为null,这意味着当前控制器是作为服务提供者。 如果提供者实现了接口IWebServiceProvider, 这将是能够拦截远程方法调用,并执行额外的任务 (如验证,写日志)。
service 属性 只读 public CWebService getService()返回目前正在使用的Web服务实例。
serviceOptions 属性 public array $serviceOptions;为CWebService对象初始属性值。 数组键是CWebService的属性名称, 数组中的值是相应的属性的初始值。
serviceUrl 属性 public string $serviceUrl;Web service的URL。默认为null,这意味着 这个动作的URL是用来提供Web服务。 在这种情况下,一个命名为serviceVar的GET参数 将被用来确定当前请求是否是WSDL或Web服务的。
serviceVar 属性 public string $serviceVar;GET参数的区别从一个Web服务请求的 WSDL请求的名称。如果存在这个GET参数,请求被认为是作为一个Web服务请求, 否则,它是一个WSDL请求。默认为“ws”。
wsdlUrl 属性 public string $wsdlUrl;WSDL的URL。默认为null,这意味着 这个动作的URL是用来服务的WSDL文档。
方法详细
createWebService() 方法protected CWebService createWebService(mixed $provider, string $wsdlUrl, string $serviceUrl) | ||
$provider | mixed | Web服务提供者的类名或对象 |
$wsdlUrl | string | WSDL的URL。 |
$serviceUrl | string | Web service的URL。 |
{return} | CWebService | Web service的实例 |
protectedfunctioncreateWebService($provider,$wsdlUrl,$serviceUrl)
{
returnnewCWebService($provider,$wsdlUrl,$serviceUrl);
}
创建CWebService实例。 你可以重写此方法自定义创建的实例。
getService() 方法public CWebService getService() | ||
{return} | CWebService | Web service的实例 |
publicfunctiongetService()
{
return$this->_service;
}
返回目前正在使用的Web服务实例。
run() 方法public void run() |
publicfunctionrun()
{
$hostInfo=Yii::app()->getRequest()->getHostInfo();
$controller=$this->getController();
if(($serviceUrl=$this->serviceUrl)===null)
$serviceUrl=$hostInfo.$controller->createUrl($this->getId(),array($this->serviceVar=>1));
if(($wsdlUrl=$this->wsdlUrl)===null)
$wsdlUrl=$hostInfo.$controller->createUrl($this->getId());
if(($provider=$this->provider)===null)
$provider=$controller;
$this->_service=$this->createWebService($provider,$wsdlUrl,$serviceUrl);
if(is_array($this->classMap))
$this->_service->classMap=$this->classMap;
foreach($this->serviceOptionsas$name=>$value)
$this->_service->$name=$value;
if(isset($_GET[$this->serviceVar]))
$this->_service->run();
else
$this->_service->renderWsdl();
Yii::app()->end();
}
执行动作。 如果GET参数serviceVar存在,这个动作处理远程方法调用。 如果没有,动作将调用服务的WSDL内容;