La classe COM
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Description
La classe COM vous permet d'instancier un objet COM compatible OLE, d'appeler ses méthodes et d'accéder à ses propriétés.
$obj = new COM("Application.ID")
Méthodes
$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 habituellement la machine locale 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 l'option de configuration ne vaut pasTRUE
.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 utilisé (comme mentionné plus haut), et l'instanciation de l'objet ne sera pas affectée par la directive.Nom de serveur DCOM clé server_name
type description Server string Le nom du serveur. Username string L'utilisateur de connexion. Password string Le mot de passe de l'utilisateur Username
.Flags integer Une ou plusieurs des constantes suivantes CLSCTX_INPROC_SERVER
,CLSCTX_INPROC_HANDLER
,CLSCTX_LOCAL_SERVER
,CLSCTX_REMOTE_SERVER
,CLSCTX_SERVER
etCLSCTX_ALL
. La valeur par défaut estCLSCTX_SERVER
si vous omettez égalementServer
, ou bienCLSCTX_REMOTE_SERVER
si vous spécifiez un serveur. Vous devriez consulter la documentation Microsoft concernant CoCreateInstance pour plus d'informations sur ces constantes ; 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 cet
objet COM. Le code est "collé", ce qui signifie qu'il se propagera aux objets
et aux variables retournés par cet 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 courante),CP_UTF7
etCP_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ées
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.
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.
Exemples avec COM
Exemple #1 Exemple avec 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 avec 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;
?>
Version en cache
22/12/2024 18:45:19 Cette version de la page est en cache (à la date du 22/12/2024 18:45:19) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.com.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.