Introducción

COM es un acrónimo de Component Object Model (Modelo de Objetos de Componentes); es una capa orientada a objetos (y servicios asociados) sobre DCE RPC (un estándar abierto) y define una convención de llamada común que habilita al código escrito en cualquier lenguaje para llamar e interoperar con código escrito en cualquier otro lenguaje (siempre que esos lenguajes sean concernientes a COM). El código no sólo puede ser escrito en cualquier lenguaje, sino que incluso no necesita ser parte del mismo ejecutable; el código se puede cargar desde una DLL, encontrarse en otro proceso en ejecución en la misma máquina, o, con DCOM (COM Distribuido), encontrarse en otro proceso en ejecución en una máquina remota, todo sin que el código necesite conocer dónde reside un componente.

Existe un subconjunto de COM, conocido como OLE Automation, que comprende un conjunto de interfaces COM que permiten la vinculación flexible de objetos COM, por lo que pueden ser examinados internamente y llamados en tiempo de ejecución sin tener conocimiento de cómo funcionan los objetos en tiempo de compilación. La extensión COM de PHP utiliza las interfaces de OLE Automation para permitir crear y llamar objetos compatibles desde los scripts. Técnicamente hablando, esta extensión debería llamarse la "Extensión de OLE Automation para PHP", ya que no todos los objetos COM son compatibles con OLE.

Ahora, ¿por qué usar COM? COM es una de las principales formas de casar aplicaciones y componentes en la plataforma Windows; al usar COM, se puede lanzar Microsoft Word, rellenar una plantilla de documento y guardar el resultado como un documento de Word y enviarlo a un visitante de su página web. También se puede usar COM para realizar tareas administrativas en su red y configurar IIS; estos son lo usos más comunes; se puede hacer mucho más con COM.

Desde PHP 5, esta extensión (y su documentación) fue rescrita desde cero y se ha eliminado mucho del código confuso y de mala calidad. Además, se admite la instanciación y creación de ensamblados .Net usando la capa de interoperabilidad de COM proporcionada por Microsoft.

Por favor, lea » este artículo para una visión general de los cambios de esta extensión en PHP 5.