(PHP 4 >= 4.1.0, PHP 5)
COM — COM class
$obj = new COM("Application.ID")
La clase COM permite instanciar un objeto COM compatible con OLE y llamar a sus métodos y accecer a sus propiedades.
Constructor de la clase COM. Los parámetros tienen los siguientes significados:
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 .
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. |
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.
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.
Añade artificialmente una cuenta de referencias al objeto COM.
Nunca debería de necesitar usar este método. Existe un complemento lógico para el método Release() de abajo.
Elimina artificialmente una cuenta de referencias de un objeto COM.
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.
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.
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.
Devuelve una variante que representa el siguiente elemento disponible del iterador, o FALSE cuando no hay más elementos.
Devuelve una variante que representa el elemento previo disponible del iterador, o FALSE cuando no hay más elementos.
Rebobina el iterador al inicio.
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;
?>