CWebServiceAction

优质
小牛编辑
131浏览
2023-12-01
所有包 | 属性 | 方法
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实现一个提供Web服务的动作。

CWebServiceAction服务有两个目的。一方面, 它显示WSDL中指定的Web服务API的内容。另一方面,它调用请求的Web service API。一个GET参数名为ws, 用来区分这两个方面:GET参数的存在 指示执行后者的行动。

默认情况下,CWebServiceAction将使用当前控制器 作为Web service提供者。参见CWsdlGenerator如何声明 可以远程调用的方法。

请注意,PHP SOAP扩展对于这一动作是必需的。

公共属性

隐藏继承属性

属性类型描述定义在
classMaparray在WSDL中声明复杂类型的PHP类的列表。 这应该是一个WSDL类型作为键和名称作为值的PHP类的数组。 一个PHP类,也可以指定一个路径别名。CWebServiceAction
controllerCController拥有这个动作的控制器。CAction
idstring动作的ID。CAction
providermixedWeb service提供者的对象或者类名。 如果指定一个类名,它可以是一个路径别名。 默认为null,这意味着当前控制器是作为服务提供者。 如果提供者实现了接口IWebServiceProvider, 这将是能够拦截远程方法调用,并执行额外的任务 (如验证,写日志)。CWebServiceAction
serviceCWebService返回目前正在使用的Web服务实例。CWebServiceAction
serviceOptionsarray为CWebService对象初始属性值。 数组键是CWebService的属性名称, 数组中的值是相应的属性的初始值。CWebServiceAction
serviceUrlstringWeb service的URL。默认为null,这意味着 这个动作的URL是用来提供Web服务。 在这种情况下,一个命名为serviceVar的GET参数 将被用来确定当前请求是否是WSDL或Web服务的。CWebServiceAction
serviceVarstringGET参数的区别从一个Web服务请求的 WSDL请求的名称。如果存在这个GET参数,请求被认为是作为一个Web服务请求, 否则,它是一个WSDL请求。默认为“ws”。CWebServiceAction
wsdlUrlstringWSDL的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
provider 属性 public mixed $provider;

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)
$providermixedWeb服务提供者的类名或对象
$wsdlUrlstringWSDL的URL。
$serviceUrlstringWeb service的URL。
{return}CWebServiceWeb service的实例
源码: framework/web/services/CWebServiceAction.php#128 (显示) protectedfunctioncreateWebService($provider,$wsdlUrl,$serviceUrl)
{
returnnewCWebService($provider,$wsdlUrl,$serviceUrl);
}

创建CWebService实例。 你可以重写此方法自定义创建的实例。

getService() 方法
public CWebService getService()
{return}CWebServiceWeb service的实例
源码: framework/web/services/CWebServiceAction.php#115 (显示) publicfunctiongetService()
{
return$this->_service;
}

返回目前正在使用的Web服务实例。

run() 方法
public void run()
源码: framework/web/services/CWebServiceAction.php#84 (显示) 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内容;