内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档...
介绍 内置于PHP4里的COM函数对于我们在win32环境下开发程序是相当有吸引力的,但是至今仍没有多少相关的技术文档。本文将以三个例子分别处理 MS office 2000 Word 、 Excel 、 Adobe Distiller 来说明如何在PHP中使用COM函数。
COM技术是由Microsoft在几年前提出并开发的,本文中提到的相关名词有OLE, OLE Automation,ActiveX, COM ,这些词的意思都基本一样,都表示用一段封装的代码(对象)来完成一个windows 应用程序的一些功能。 PHP4 COM 函数可以连接一个对象实例,并使用它的方法与属性。
如果你想使用下面的例子源码,请参考一下我的配置。
Windows 98 - MS Office 2000 Apache 1.3.9 Windows PHP4.02 Dev (08-20-00) Running as CGI |
PHP4中的COM标记 现在让我们开始吧,用PHP4的COM来实例化一个组件,需要 new 操作符和对象的 "OLE 程序标识":
$instance = new COM("$identifier");
?> |
因为COM是一个PHP4的保留字,它传送这个对象的标识给一个构造函数,现在得到了这个组件的一个实例,根据OOP类的性质,我们可以很容易地访问它的方法与属性。
例如:
$instance->[Object]->[method1]->[method2]->..->[property];
?> |
就是这么简单!
OOP的结构在PHP下不能工作,(由于PHP语法的问题,属性的名字.值是非法字符,如点和圆括号等),所以PHP4提供了两个相应的函数:
bool com_set(class com_object, string property name, string property_value);
mixed com_get(class com_object, string property_name);
?> |
最后,PHP4也支持DCOM技术,可以在远程计算机创建一个对象实例。
$Instance = new COM(string "Component name", string "remote_server_address");
?> |
注意:这是用DCOM指令来设置PHP。在将来,PHP开发者提供Unix下对DCOM的支持。
标识、方法和属性 标识是一个如下的字串:
MS Word: "Word.Application" or "Word.Application.9" MS Excel: "Excel.Application" or "Excel.Sheet" ADOBE Acrobat: "Exch.application" or "PdfDistiller.PdfDistiller" |
对于最后一个标识,我要指明的是,获得正确的对象标识名不是一件容易的事。如果你不能访问VBA文档,你可以查找一下windows的注册表,在 HKEY_CLASSES_ROOT 中寻找一下,你就可以得到一些应用程序的名字。在你的机器上有效的对象标识放在 CLSID 子文件夹下。
应用程序一般会提供文档说明它的COM方法和属性。在office2000中,你可以运行程序,打开VBA编辑器 ,选择对象编辑器。输入应用程序库中的一个方法名或属性名,然后,在下面的窗口中用鼠标右键选择一个类或成员名称,点帮助,你就会得到关于这个类或成员的描述。你也可以参考 MSDN。一个 Excel 的例子如下: http://msdn.microsoft.com/library/officedev/off2000/xltocobjectmodelapplication.htm