J'ai actuellement un petit problème avec les manipulations d'activeX
avec PHP :
Les bugs #33734 et #44578 sur bugs.php.net représentent parfaitement
le problème que j'ai.
Il est dit dans le bug #33734 que le problème est sensé être résolu
depuis la version 5.1.0 mais je suis à la version 5.2.5 et je
rencontre néanmoins le problème.
Voici le code :
---------------------
<?php
// Creation de l'objet COM $obj_persist
$obj_persist = new COM("PERSIST.PersistCtrl.1")or die("Error");
$obj_appli = $obj_persist->Applications->Add($path);
$obj_unite = $obj_appli->Units->Add("foo");
$obj_instance = $obj_unite->objects->add($nom_instance);
$sous_objet = $obj_instance->collection("Objects");
$propriete = $sous_objet->Item("alm");
echo "Label Value : " . $propriete->Value("Label",0); //Renvoie la
bonne valeur => OK en lecture
//Ecriture Test 2
$propriete->Value["Label",0] = "Nouveau libellé";
// Invalid number of parameters.
Résultat Attendu:
----------------
J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete-
>Value["Label",0]. Avec des parenthèses, des crochets, et même un mix
des deux. Impossible d'écrire la valeur.
J'ai également essayé avec VBa, ça marche sans le moindre problème
avec le code suivant.
Dim SsObjs as PrsCollObjects
Set SsObjs = MyInst.Collection("Objects")
Set MyObject = SsObjs.Item("Fault")
MyObject.Value("Label", 0) = "Défaut pompe 1"
Résultat actuel:
--------------
Résultat TEST 1 avec () :
Fatal error: Can't use method return value in write context in
C:\wamp\www\Test COM\index.php on line 71
Résultat TEST 2 avec [] :
Fatal error: Uncaught exception 'com_exception' with message 'Error
[0x8002000e] Nombre de param?tres non valide. ' in C:\wamp\www\Test
COM\index.php:69 Stack trace: #0 C:\wamp\www\Test COM\index.php(69):
unknown() #1 {main} thrown in C:\wamp\www\Test COM\index.php on line
69
Selon la façon d'ecrire ma commande, j'ai aussi parfois le message
d'erreur suivant :
"Unexpected ','" error.
Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
//Ecriture Test 2 $propriete->Value["Label",0] = "Nouveau libellé"; // Invalid number of parameters.
Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de type tableau.
Résultat Attendu: ---------------- J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete-
Value["Label",0]. Avec des parenthèses, des crochets, et même un mix des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se trouver dans $propriete. Alors jette un coup d'½il à la doc qui le définit, et regarde si c'est une fonction, ou un tableau de tableaux, ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des exemples dont tu pourrais t'inspirer avec profit.
Cordialement, -- Olivier Miakinen
Bonjour,
J'ai actuellement un petit problème avec les manipulations d'activeX
avec PHP :
Je n'y connais strictement rien, alors ma réponse sera au ras des
paquerettes de la syntaxe de PHP.
Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur
de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau
libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
//Ecriture Test 2
$propriete->Value["Label",0] = "Nouveau libellé";
// Invalid number of parameters.
Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de
type tableau.
Résultat Attendu:
----------------
J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete-
Value["Label",0]. Avec des parenthèses, des crochets, et même un mix
des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se
trouver dans $propriete. Alors jette un coup d'½il à la doc qui le
définit, et regarde si c'est une fonction, ou un tableau de tableaux,
ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des
exemples dont tu pourrais t'inspirer avec profit.
Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
//Ecriture Test 2 $propriete->Value["Label",0] = "Nouveau libellé"; // Invalid number of parameters.
Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de type tableau.
Résultat Attendu: ---------------- J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete-
Value["Label",0]. Avec des parenthèses, des crochets, et même un mix des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se trouver dans $propriete. Alors jette un coup d'½il à la doc qui le définit, et regarde si c'est une fonction, ou un tableau de tableaux, ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des exemples dont tu pourrais t'inspirer avec profit.
Cordialement, -- Olivier Miakinen
Amarth Isilme
Bonjour,
// Ecriture Test 1 $propriete->Value("Label",0) = "Nouveau libellé"; // Fatal Error Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur
de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
La question que je me pose, c'est pourquoi l'équivalent en VBa fonctionne correctement : MyObject.Value("Label", 0) = "Défaut pompe 1" ne retourne pas d'erreur et assigne bien la valeur "Défaut Pompe 1" au libellé de mon objet (MyObject.Value("Label", 0))
//Ecriture Test 2 $propriete->Value["Label",0] = "Nouveau libellé"; // Invalid number of parameters. Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de
type tableau. J'ai testé ici différentes syntaxes car j'ai lu dans les bugs de PHP,
que certaines versions (>5.0.4 il me semble) ne prenaient plus en compte les formes d'ecriture du type ()= et avaient été remplacées par []=. Les tests ont été cependant infructueux.
Résultat Attendu: ---------------- J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete->Value["Label",0]. Avec des parenthèses, des crochets, et même un mix des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se trouver dans $propriete. Alors jette un coup d'½il à la doc qui le définit, et regarde si c'est une fonction, ou un tableau de tableaux, ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des exemples dont tu pourrais t'inspirer avec profit.
Le code en VB qui est dans mon premier message est directement tiré de la maigre documentation à ma disposition. J'ai essayé de traduire tant bien que mal ce code en PHP, et je bute sur la partie MyObject.Value("Label", 0) = "Défaut pompe 1" que j'ai traduite par $propriete->Value("Label",0) = "Nouveau libellé";. J'accède bien à $propriete->Value("Label",0) en lecture mais l'écriture provoque invariablement une "Fatal Error".
Cordialement et merci pour ta réponse,
Amarth Isilme
Bonjour,
// Ecriture Test 1
$propriete->Value("Label",0) = "Nouveau libellé";
// Fatal Error
Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur
de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau
libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
La question que je me pose, c'est pourquoi l'équivalent en VBa
fonctionne correctement :
MyObject.Value("Label", 0) = "Défaut pompe 1" ne retourne pas
d'erreur et assigne bien la valeur "Défaut Pompe 1" au libellé de mon
objet (MyObject.Value("Label", 0))
//Ecriture Test 2
$propriete->Value["Label",0] = "Nouveau libellé";
// Invalid number of parameters.
Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de
type tableau.
J'ai testé ici différentes syntaxes car j'ai lu dans les bugs de PHP,
que certaines versions (>5.0.4 il me semble) ne prenaient plus en
compte les formes d'ecriture du type ()= et avaient été remplacées par
[]=.
Les tests ont été cependant infructueux.
Résultat Attendu:
----------------
J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete->Value["Label",0]. Avec des parenthèses, des crochets, et même un mix
des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se
trouver dans $propriete. Alors jette un coup d'½il à la doc qui le
définit, et regarde si c'est une fonction, ou un tableau de tableaux,
ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des
exemples dont tu pourrais t'inspirer avec profit.
Le code en VB qui est dans mon premier message est directement tiré de
la maigre documentation à ma disposition.
J'ai essayé de traduire tant bien que mal ce code en PHP, et je bute
sur la partie MyObject.Value("Label", 0) = "Défaut pompe 1" que j'ai
traduite par $propriete->Value("Label",0) = "Nouveau libellé";.
J'accède bien à $propriete->Value("Label",0) en lecture mais
l'écriture provoque invariablement une "Fatal Error".
// Ecriture Test 1 $propriete->Value("Label",0) = "Nouveau libellé"; // Fatal Error Ici, tu sembles vouloir appeler une fonction, puis écraser la valeur
de retour (quelle qu'elle soit) par la chaîne de caractères "Nouveau libellé" qui, d'ailleurs, n'est pas transmise à la fonction.
La question que je me pose, c'est pourquoi l'équivalent en VBa fonctionne correctement : MyObject.Value("Label", 0) = "Défaut pompe 1" ne retourne pas d'erreur et assigne bien la valeur "Défaut Pompe 1" au libellé de mon objet (MyObject.Value("Label", 0))
//Ecriture Test 2 $propriete->Value["Label",0] = "Nouveau libellé"; // Invalid number of parameters. Et là tu sembles vouloir redéfinir la syntaxe d'accès aux valeurs de
type tableau. J'ai testé ici différentes syntaxes car j'ai lu dans les bugs de PHP,
que certaines versions (>5.0.4 il me semble) ne prenaient plus en compte les formes d'ecriture du type ()= et avaient été remplacées par []=. Les tests ont été cependant infructueux.
Résultat Attendu: ---------------- J'ai essayé de plusieurs façons d'écrire dans la propriété $propriete->Value["Label",0]. Avec des parenthèses, des crochets, et même un mix des deux. Impossible d'écrire la valeur.
Je suppose que tu n'as pas inventé le nom « Value » qui est censé se trouver dans $propriete. Alors jette un coup d'½il à la doc qui le définit, et regarde si c'est une fonction, ou un tableau de tableaux, ou quoi que ce soit d'autre. Par ailleurs, il existe sûrement des exemples dont tu pourrais t'inspirer avec profit.
Le code en VB qui est dans mon premier message est directement tiré de la maigre documentation à ma disposition. J'ai essayé de traduire tant bien que mal ce code en PHP, et je bute sur la partie MyObject.Value("Label", 0) = "Défaut pompe 1" que j'ai traduite par $propriete->Value("Label",0) = "Nouveau libellé";. J'accède bien à $propriete->Value("Label",0) en lecture mais l'écriture provoque invariablement une "Fatal Error".