章 55. PHP 和 COMPHP 可以在 Win32 平台中访问 COM 和 DCOM 对象。
如果这是个简单的 DLL 那么还没有办法在 PHP 中运行它。如果这个 DLL 中包含有一个 COM 服务器并且它实现了 IDispatch 接口,那有可能访问它。 有几十种 VARIANT 类型以及它们的组合。大多数已经被支持了但还有几种尚未实现。数组没有完全被支持。只有一维的仅用作索引的数组可以在 PHP 和 COM 之间传递。如果你发现其它未支持的类型,请当作一个 bug 报告(如果尚未被报告的话)并提供尽可能多的信息。 一般来说是可以的,但是 PHP 大都用来作为 web 脚本语言并运行在 web 服务器的上下文环境中,因此可视对象决不会在服务器的桌面上显示。如果你把 PHP 用作应用程序脚本例如结合 PHP-GTK 来使用,那么访问和通过 COM 来操纵可视对象方面没有限制。 在 PHP 5 中,COM 扩展会发出 com_exception 异常信息,可以捕获并检查 code 成员来决定下一步的行为。 在 PHP 4 中除了用 PHP 自己提供的办法之外(@,track_errors,..)不可能捕获 COM 的错误。 此错误可以有多种原因:
完全和运行本地对象一样。只须将远端服务器的 IP 作为第二个变量传递给 COM 的构造函数即可。 确认在 php.ini 中设定了 com.allow_dcom =TRUE。 编辑 php.ini 并设定 com.allow_dcom =TRUE。 这不关 PHP 的事。如果在 HTML 文档中请求的话,ActiveX 对象被加载在客户端。这和 PHP 脚本没有关系,因此也不可能和服务器端发生直接的交互作用。 在绰号的帮助下这有可能。如果你想得到同一个 word 实例的多个引用你可以这样建立此实例:
如果没有运行中的实例这将建立一个新的实例,否则将会返回正在运行中的实例的句柄,如果可用的话。 可以自定义事件收报方并且用 com_event_sink() 函数绑定之。可以用 com_print_typeinfo() 来让 PHP 产生事件收报方类的框架。 我也不知道怎么办,我想这没办法。如果什么人有对此问题的明确信息请告诉我。:) | |||