(PHP 4 >= 4.1.0, PHP 5, PHP 7)
La clase COM permite crear una instancia de un objeto COM compatible con OLE y llamar sus métodos y aceder sus propiedades.
$obj = new COM("Application.ID")
$module_name
[, mixed $server_name
[, int $codepage
[, string $typelib
]]] )Constructor de la clase COM. Los parámetros tienen los siguientes significados:
NULL
el objeto es ejecutado usando el predeterminado para
la aplicación. Lo predeterminado típicamente es ejecutarlo sobre la máquina
local, aunque el administrador puede configurar la aplicación para
ejecutarlo en una máquina diferente.
Si se especifica un valor distinto de NULL
para el servidor, PHP se reusará a cargar
el objeto a no ser que la opción de configuración
sea TRUE
.
Si server_name
es un array, este debería contener
los siguientes elementos (distinguiendo mayúsculas de minúsculas!). Note que
son todos opcionales (aunque se necesita especificar Username y Password juntos);
si se omite el elemento Server, será usado el servidor predeterminado (como se
menciona más arriba), y la creación de la instancia del objeto no será
afectada por la directiva .
server_name clave |
Tipo | Descripción |
---|---|---|
Server | string | Nombre del servidor. |
Username | string | El nombre de usuario para conectarse. |
Password | string | La clave para Username . |
Flags | integer | Una o más de las siguientes constantes, unidas por un OR lógico:
CLSCTX_INPROC_SERVER ,
CLSCTX_INPROC_HANDLER ,
CLSCTX_LOCAL_SERVER ,
CLSCTX_REMOTE_SERVER ,
CLSCTX_SERVER y
CLSCTX_ALL . El valor predeterminado si no se especifica aquí es
CLSCTX_SERVER si tambien se omitió Server , o
CLSCTX_REMOTE_SERVER si se especificó un servidor.
Se debe consultar la documentación de Microsoft para CoCreateInstance para
más información sobre el significado de estas constantes; típicamente nunca suelen usarse.
|
CP_ACP
(Usando la página de código ANSI predeterminada - si este parámetro
se omite es lo predeterminado),
CP_MACCP
,
CP_OEMCP
, CP_SYMBOL
,
CP_THREAD_ACP
(usando la página de código/localización establecida para
el hilo de ejecución actual), CP_UTF7
y CP_UTF8
. Tambien puede usar el número de una página de código;
consulte la documentación de Microsoft para más detalles sobre los códigos de páginas
y sus valores numéricos.
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 de propiedad o método son pasados a través de COM.
Comenzando con PHP 5, PHP automáticamente detectará métodos que acepten parámetros por referencia, y automáticamente convertirá las variables regulares de PHP a una forma que pueden ser pasadas por referencia. Esto significa que puede llamar los métodos muy naturalmente; no hay necesidad de ningún esfuerzo extra en su código.
En PHP 4, para pasar parámetros por referencia necesita crear una instancia de la clase VARIANT para envolver los parámetros byref.
En versiones de PHP anteriores a 5, un número no muy agradables de trucos significaba que los siguientes nombres de métodos no sean pasados a través de COM y fueran directamente controlados por PHP. PHP 5 elimina todo esto; lea los detalles a continuación para determinar como corregir su código. Estos nombres de métodos mágicos son insensible a las mayusculas.
Agrega artificialmente una referencia de contador al objeto COM.
No debería tener necesidad de usar este método. Existe como un complemento lógico al método Release() a continuación.
Remueve artificialmente una referencia de contador al objeto COM.
No debería tener necesidad de usar este método. Su existencia en PHP es un error diseñado para evitar un error que mantiene objetos COM ejecutandose por más tiempo que el debido.
Estos pseudo métodos solo estan disponibles si com_isenum()
devuelve TRUE
, en cuyo caso, esconden cualquier método con los mismos nombres
que podrían ser proporcionados por el objeto COM. Estos métodos han sido eliminados
en PHP 5, y debería usar For Each en su lugar.
Devuelve un variant que representa un SafeArray con 10 elementos; cada elementos será un variant vacío o null. Esta función Returns a variant representing a SafeArray that has 10 elements; each element will be an empty/null variant. This function was supposed to return an array containing all the elements from the iterator, but was never completed. Do not use.
Devuelve un variant representando el siguiente elemento disponible en el
iterador, o FALSE
cuando no hay más elementos.
Devuelve un variant representando el elemento anterior disponible
en el iterador, o FALSE
cuando no hay más elementos.
Retrocede el iterador hasta el principio.
Ejemplo #1 Ejemplo COM (1)
<?php
// Iniciando word
$word = new COM("word.application") or die("No se puede crear la instancia de Word");
echo "Word cargado, versión {$word->Version}\n";
//traerlo al frente
$word->Visible = 1;
//abrir un documento vacío
$word->Documents->Add();
//hacer algunas cosas raras
$word->Selection->TypeText("Esto es una prueba...");
$word->Documents[1]->SaveAs("Prueba inutil.doc");
//cerrando word
$word->Quit();
//liberando el objeto
$word = null;
?>
Ejemplo #2 Ejemplo COM (2)
<?php
$conn = new COM("ADODB.Connection") or die("No se puede iniciar ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password");
$rs = $conn->Execute("SELECT * FROM sometable"); // Registros
$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++; // incrementa rowcount
$rs->MoveNext();
}
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;
?>