VIII. Windows 的 COM 支持函数库

介绍

COM 是一种允许(用任何语言编写的)可重用代码使用标准常规调用,同时将执行细节隐藏在 API 之后的技术,例如组件存储在某台机器上,同时可对机器执行内务处理。它可以被认为是一种带基础根对象的超级远程呼叫调用(Remote Procedure Call,RPC)机制。它将执行从接口中分离出来。

COM 促使执行从接口中分离,同时隐藏了执行细节,例如执行的位置和编写代码使用的语言。

需求

COM 函数仅可用于 PHP 的 Windows 版本。

安装

这些函数作为 PHP 核心的一部分,无需被安装即可使用。

PHP 的 Windows 版本已经内置该扩展模块的支持。您无需加载任何附加的扩展库即可使用这些函数。

运行时配置

这些函数的行为受到全局配置文件 php.ini 的影响。

表格 1. COM 配置选项

名称默认值作用范围
com.allow_dcom"0"PHP_INI_SYSTEM
com.autoregister_typelib"0"PHP_INI_SYSTEM
com.autoregister_verbose"0"PHP_INI_SYSTEM
com.autoregister_casesensitive"1"PHP_INI_SYSTEM
com.typelib_file""PHP_INI_SYSTEM
更多关于常量 PHP_INI_* 的细节和解释参见 ini_set().

预定义常量

由于这些常量是由该扩展模块定义的,因此只有在该扩展模块被编译到 PHP 中,或者在运行时被动态加载后,这些常量才有效。

CLSCTX_INPROC_SERVER (integer)

CLSCTX_INPROC_HANDLER (integer)

CLSCTX_LOCAL_SERVER (integer)

CLSCTX_REMOTE_SERVER (integer)

CLSCTX_SERVER (integer)

CLSCTX_ALL (integer)

VT_NULL (integer)

VT_EMPTY (integer)

VT_UI1 (integer)

VT_I2 (integer)

VT_I4 (integer)

VT_R4 (integer)

VT_R8 (integer)

VT_BOOL (integer)

VT_ERROR (integer)

VT_CY (integer)

VT_DATE (integer)

VT_BSTR (integer)

VT_DECIMAL (integer)

VT_UNKNOWN (integer)

VT_DISPATCH (integer)

VT_VARIANT (integer)

VT_I1 (integer)

VT_UI2 (integer)

VT_UI4 (integer)

VT_INT (integer)

VT_UINT (integer)

VT_ARRAY (integer)

VT_BYREF (integer)

CP_ACP (integer)

CP_MACCP (integer)

CP_OEMCP (integer)

CP_UTF7 (integer)

CP_UTF8 (integer)

CP_SYMBOL (integer)

CP_THREAD_ACP (integer)

相关参考

更多关于 COM 的信息请阅读 COM specification 或有可能的话看一看 Don Box 的 Yet Another COM Library (YACL)

目录
COM -- COM 类
VARIANT -- VARIANT 类
com_addref --  增加组件引用计数。
com_get --  获取 COM 组件的属性值
com_invoke --  调用 COM 组件的方法。
com_isenum -- 获取一个 IEnumVariant
com_load_typelib -- 装载一个 Typelib
com_load --  创建新的 COM 组件的引用
com_propget -- com_get() 的别名
com_propput -- com_set() 的别名
com_propset -- com_set() 的别名
com_release --  减少组件引用计数。
com_set --  给 COM 组件的属性赋值