COM

(no version information, might be only in CVS)

COM -- Classe COM

Synopsis

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

Description

La classe COM vous permet d'instancier un objet COM compatible OLE, d'appeler ces méthodes et d'accéder à ces propriétés.

Méthodes

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

Constructeur de la classe COM. Paramètres :

module_name

Peut être un ProgID, un Class ID ou un Moniker qui nomment un composant à charger.

Un ProgID est typiquement une application ou le nom d'une DLL, suivi d'une période, suivi par le nom de l'objet. e.g : Word.Application.

Un Class ID est un UUID qui identifie de manière unique une classe donnée.

Un Moniker est une manière spéciale de nommage, similaire dans le concept au schéma d'URL, qui identifie une ressource et spécifie comment elle doit être chargée. Par exemple, vous pouvez charger Word et prendre un objet représentant un document Word en spécifiant le chemin complet du document Word comme nom de module, ou bien, vous pouvez utiliser LDAP: comme un Moniker pour utiliser l'interface ADSI pour LDAP.

server_name

Le nom du serveur DCOM sur lequel le composant devrait être chargé et lancé. Si le paramètre vaut NULL, l'objet courant utilisera la valeur par défaut pour l'application. La valeur par défaut est typiquement localhost bien que l'administrateur peut avoir configuré l'application pour qu'elle s'exécute sur une machine différente.

Si vous spécifiez une valeur non-NULL pour le serveur, PHP peut refuser de charger l'objet tant que com.allow_dcom l'option de configuration ne vaut pas TRUE.

Si server_name est un tableau, il doit contenir les éléments suivants (sensible à la casse). Notez qu'ils sont tous optionnels (bien que vous devez spécifier et USERNAME, et PASSWORD) ; si vous omettez les paramètres du serveur, le serveur par défaut sera utiliser (comme mentionné plus haut), et l'instanciation de l'objet ne sera pas affecté par com.allow_dcom la directive.

Tableau 1. DCOM server name

clé server_nametypedescription
ServerchaîneLe nom du serveur.
UsernamechaîneL'utilisateur de connexion.
PasswordchaîneLe mot de passe de l'utilisateur Username.
FlagsentierUne ou plusieurs des constantes suivantes CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER, CLSCTX_REMOTE_SERVER, CLSCTX_SERVER et CLSCTX_ALL. La valeur par défaut est CLSCTX_SERVER si vous omettez également Server, ou bien CLSCTX_REMOTE_SERVER si vous spécifiez un serveur. Vous devriez consulter la dcumentation Mcrosoft concernant CoCreateInstance pour plus d'informations sur cesconstantes ; vous ne devriez pas les utiliser dans un cas typique.

codepage

Spécifie le code qui est utilisé pour transformer les chaînes de caractères PHP en chaînes unicode, et vice-versa. La conversion est appliquée même si une chaîne PHP est passée en paramètre ou bien retournée d'une méthode de cette objet COM. Le code est "collé" en PHP 5, ce qui siginifie qu'il se propagera aux objets et aux variables retournés par cette objet.

Les valeurs possibles sont : CP_ACP (utilise le code système par défaut d'ANSI - valeur par défaut si le paramètre est omis), CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP (utilise la valeur du code local pour l'exécution courant), CP_UTF7 et CP_UTF8. Vous devriez également utiliser le numéro pour un code donné ; consultez la documentation de Microsoft pour plus de détails sur les codes et leurs valeurs numériques.

Méthodes surchargés

L'objet retourné est un objet surchargé, ce qui signifie que PHP ne voit aucune méthode fixe comme il le fait avec les classes habituelles ; au lieu de cela, chaque accès à une propriété ou une méthode est effectué à travers COM.

A partir de PHP 5, PHP détectera automatiquement les méthodes qui acceptent les paramètres par référence, et convertira automatiquement les variables PHP classiques en une forme pouvant être passée par référence. Cela signifie que vous pouvez appeler les méthodes de façon naturelle ; vous n'avez pas d'efforts supplémentaires à faire dans votre code.

En PHP 4, pour passer les paramètres par référence, vous devez créer une instance de VARIANT la classe pour utiliser les paramètres par référence.

Les pseudos méthodes

Dans les versions antérieures à PHP 5, des hacks faisaient que les noms des méthodes suivantes n'étaient pas passés à COM et étaient directement gérés par PHP. PHP 5 élimine cela ; lisez les détails suivants pour déterminer comment corrger vos scripts. Ces noms de méthodes ne sont pas sensibles à la casse.

void COM::AddRef ( void )

Ajoute artificiellement un compteur de référence à l'objet COM.

Avertissement

Vous ne devriez jamais avoir besoin d'utiliser cette méthode. Il existe un complément logique à la méthode Release() ci-dessous.

void COM::Release ( void )

Supprime artificellement un compteur de référence à un objet COM.

Avertissement

Vous ne devriez jamais avoir besoin d'utiliser cette méthode. Son existence en PHP est un bogue fait pour résoudre un autre bogue qui conserve les objets COM fonctionnels plus longtemps qu'ils ne devraient l'être.

Les pseudos méthodes pour itération

Ces pseudos méthodes ne sont valables que si com_isenum() retourne TRUE et dans ce cas, elles cachent toutes autres méthodes portant le même nom qui pourraient provenir de l'objet COM. Ces méthodes ont été éliminées de PHP 5, et vous devez utiliser la section intitulée For Each dans Référence XV, COM et .Net (Windows) en lieu et place.

variant COM::All ( void )

Retourne une variante représentant un "SafeArray" qui possède 10 éléments ; chaque élément sera une variante vide ou nulle. Cette fonction est supposée retourner un tableau contenant tous les éléments de l'itération, mais ne sera jamais complet. Ne pas l'utiliser.

variant COM::Next ( void )

Retourne une variante représentant l'élément disponible suivant de l'itération ou FALSE lorsqu'il n'y a plus d'élément.

variant COM::Prev ( void )

Retourne une variante représentant l'élément disponible précédent de l'itération ou FALSE lorsqu'il n'y a plus d'élément.

void COM::Reset ( void )

Replace l'itération au début.

COM examples

Exemple 1. Exemple COM (1)

<?php

/* Démarrage de Word */
$word = new COM("word.application") or die("Impossible d'instancier l'application Word");
echo
"Word lancé, version {$word->Version}\n";

/* Amener Word devant */
$word->Visible = 1;

/* Cree un document vide */
$word->Documents->Add();

/* Quelques commandes */
$word->Selection->TypeText("Ceci est un test...");
$word->Documents[1]->SaveAs("test.doc");

/* Fermeture de word */
$word->Quit();

/* Libération des ressources */
$word = null;
?>

Exemple 2. Exemple COM (2)

<?php
$conn
= new COM("ADODB.Connection") or die("Impossible de démarrer ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password"
);

/* Jeux d'enregistrement */
$rs = $conn->Execute("SELECT * FROM sometable");    

$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";
    
    
/* Incrémentation */
    
$rowcount++;
    
$rs->MoveNext();
}

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

$rs = null;
$conn = null;

?>

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:02:01