Funciones de COM
PHP Manual

COM

(PHP 4 >= 4.1.0, PHP 5)

COMCOM class

$obj = new COM("Application.ID")

Descripción

La clase COM permite instanciar un objeto COM compatible con OLE y llamar a sus métodos y accecer a sus propiedades.

Métodos

com COM::COM ( string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]] )

Constructor de la clase COM. Los parámetros tienen los siguientes significados:

module_name
Puede ser un ProgID, Class ID o Moniker que nombra al componente a cargar. Un ProgID es normalmente el nombre de la aplicación o DLL, seguido de un punto, seguido del nombre del objeto. P.ej: Word.Application. Un Class ID es el UUID que identifica de manera única una clase dada. Un Moniker es una forma de nominación especial, similar al concepto de un esquema URL, que identifica un recurso y especifica cómo debería ser cargado. Como ejemplo, se podría cargar Word y obtener un objeto que represente un documento de Word especificando la ruta completa de éste como el nombre del módulo, o se puede usar LDAP: como un moniker para utilizar la interfaz ADSI para LDAP.
server_name
El nombre del servidor DCOM en el que se debería cargar y ejecutar el componente. Si es NULL, el objeto se ejecuta usando lo predeterminado para la aplicación. Lo predeterminado es normalmente ejecutarlo en la máquina local, aunque el administrador podría haber configurado la aplicación para lanzarlo en una máquina diferente. Si se especifica un valor distinto de NULL para el servidor, PHP rehusará cargar el objeto a menos que la opción de configuración esté establecida a TRUE.

Si server_name es un array, debería contener los siguientes elementos (¡sensible a mayúsculas-minúsculas!). Observe que todos son opcionales (aunque se necesitan especificar Username y Password juntos); si se omite Server, se usará el servidor predeterminado (como se mencionó arriba), y la instanciación del objeto no será afectada por la directiva .

Nombre del servidor DCOM
clave server_name tipo descripción
Server string El nombre del servidor.
Username string El nombre de ususario con que se va a contectar.
Password string La contraseña para Username.
Flags integer Una o más de las siguientes constantes, lógicamente usando OR entre ellas: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER, CLSCTX_REMOTE_SERVER, CLSCTX_SERVER and CLSCTX_ALL. El valor por defecto si no se especifica es CLSCTX_SERVER si también se omite Server, o CLSCTX_REMOTE_SERVER si se especifica un servidor. Debería consultar la documentación de Microsoft de CoCreateInstance para más información sobre el significado de estas constantes; normalmente no tendrá que usarlas nunca.

codepage
Especifica la página de código que se usa para convertir cadenas a cadenas unicode y viceversa. La conversión se aplica siempre que se pasa una cadena de PHP como parámetro o es devuelta desde un método de este objeto COM. La página de código en PHP 5 es "pegajosa", lo que significa que se propagará por los objetos y variantes devueltos desde el objeto. Los valores posibles son CP_ACP (utiliza la página de código ANSI predeterminada del sistema - lo predeterminado si se omite el parámetro), CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP (utiliza el conjunto página de código/configuración regional para el hilo actual en ejecución), CP_UTF7 y CP_UTF8. También se puede usar el número para una página de código dada; consulte la documentación de Microsoft para más detalles sobre páginas de código y sus valores numéricos.

Métodos sobrecargados

El objeto devuelto es un objeto sobrecargado, lo que significa que PHP no ve ningún método fijo como lo hace con las clases regulares; en su lugar, cualquier acceso a una propiedad o método es pasado a través de COM.

Desde PHP 5, PHP detecta métodos que aceptan parámetros por referencia, y automáticamente convierte variables regulares de PHP a una forma que puede ser pasada por referencia. Esto significa que se puede llamar al método con mucha naturalidad; no se necesita ningún esfuerzo extra en su código.

en PHP 4, para pasar parámetros por referencia se necesita crear una instancia de la clase VARIANT para envolver los parámetros por referencia.

Pseudo Métodos

En versiones de PHP anteriores a la 5, un número de errores no muy agradables significó que los siguiente nombres de métodos no fueron pasados a través de COM y que estaban directamente manejados por PHP. PHP 5 elimina esto; lea los detalles de abajo para determinar cómo arreglar sus scripts. Estos nombres de métodos mágicos son insensibles a mayúsculas-minúsculas.

void COM::AddRef ( void )

Añade artificialmente una cuenta de referencias al objeto COM.

Warning

Nunca debería de necesitar usar este método. Existe un complemento lógico para el método Release() de abajo.

void COM::Release ( void )

Elimina artificialmente una cuenta de referencias de un objeto COM.

Warning

Nunca debería de necesitar usar este método. Su existencia en PHP es un error diseñado para evitar un error que mantiene los objetos COM ejecutándose más de lo deberían.

Pseudométodos para Iterar

Estos pseudométodos sólo están disponibles si com_isenum() devuelve TRUE, en cuyo caso oculta cualquier método con el mismo nombre que de otro modo pudiera ser proporcionado por el objeto COM. Todos estos métodos han sido eliminados en PHP 5, y debería de usar For Each en su lugar.

variant COM::All ( void )

Devuelve una variante que representa un SafeArray que tiene 10 elementos; cada elemento será una variante vacía/null. Esta función se suponiá que devolvía un array que contenía todos los elementos del iterador, pero nunca fue completada. No la use.

variant COM::Next ( void )

Devuelve una variante que representa el siguiente elemento disponible del iterador, o FALSE cuando no hay más elementos.

variant COM::Prev ( void )

Devuelve una variante que representa el elemento previo disponible del iterador, o FALSE cuando no hay más elementos.

void COM::Reset ( void )

Rebobina el iterador al inicio.

Ejemplos de COM

Example #1 Ejemplo de COM (1)

<?php
// iniciar word
$word = new COM("word.application") or die("Unable to instantiate Word");
echo 
"Loaded Word, version {$word->Version}\n";

//traerlo al frente
$word->Visible 1;

//abrir un documento vacío
$word->Documents->Add();

//hacer alguna cosa extraña
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//cerra word
$word->Quit();

//liberar el objeto
$word null;
?>

Example #2 Ejemplo de COM (2)

<?php

$conn 
= new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password"
);

$rs $conn->Execute("SELECT * FROM sometable");    // Recordset

$num_columns $rs->Fields->Count();
echo 
$num_columns "\n";

for (
$i=0$i $num_columns$i++) {
    
$fld[$i] = $rs->Fields($i);
}

$rowcount 0;
while (!
$rs->EOF) {
    for (
$i=0$i $num_columns$i++) {
        echo 
$fld[$i]->value "\t";
    }
    echo 
"\n";
    
$rowcount++;            // increments rowcount
    
$rs->MoveNext();
}

$rs->Close();
$conn->Close();

$rs null;
$conn null;

?>


Funciones de COM
PHP Manual