php stocket,PHP: PHP et COM - Manual

PHP et COM

PHP peut être utilisé pour accéder à des objets COM et DCOM sur les

plates-formes Win32.

J'ai compilé une DLL pour calculer quelque chose. Y a-t-il un moyen

d'utiliser cette DLL sous PHP ?

Si c'est une DLL simple, il n'y a aucun moyen pour le moment de

l'utiliser avec PHP. Si la DLL contient un serveur COM, vous pourrez

l'utiliser si elle implémente l'interface IDispatch.

Que signifie 'Unsupported variant type: xxxx (0xxxxx)' ?

Il y a des dizaines de types de VARIANT et de combinaisons entre elles.

La plupart d'entre elles sont déjà supportées, mais quelques une ne sont

toujours pas implémentées.

Les tableaux ne sont pas complètement supportés. Seuls le tableaux

unidimensionnels indexés peuvent être transmis entre PHP et COM.

Si vous trouvez d'autres types qui ne sont pas supportés, reportez-les

nous comme un bogue (si ce n'est pas déjà fait) et fournissez le plus

d'informations possibles.

Est-il possible de manipuler des objets visuels en PHP ?

Généralement, c'est possible, mais comme PHP est utilisé le plus

souvent en tant que langage de script web et dans un environnement de

serveur web, les objets visuels n'apparaîtront jamais sur le bureau du

serveur.

Si vous voulez utiliser PHP pour scripter des applications, par

exemple avec PHP-GTK, il n'y a aucune limitation à accéder et

manipuler des objets visuels via COM.

Puis-je stocker un objet COM dans une session ?

Non, vous ne pouvez pas. Les instances COM sont traitées comme des

ressources, ce qui signifie qu'elles ne sont disponibles que dans un

seul contexte de script.

Comment puis-je intercepter des erreurs COM ?

L'extension COM envoie des exceptions

com_exception, que vous pouvez intercepter en

inspectant le membre code pour déterminer que faire.

Puis-je générer des fichiers DLL à partir de PHP comme je le fais avec

Perl ?

Non, il n'y a malheureusement pas d'outil disponible pour le faire en

PHP.

Que signifie 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' ?

Cette erreur peut avoir plusieurs causes :le CLSID est incorrect

la DLL demandée est introuvable

le composant demandé n'implémente pas l'interface IDispatch

Comment puis-je utiliser des objets COM à partir d'un serveur distant ?

Exactement de la même manière qu'avec des objets locaux. Vous devez

juste passer l'adresse IP de la machine distante en deuxième paramètre

du constructeur COM.

Assurez-vous que vous avez spécifié

com.allow_dcom=true dans votre

php.ini.

J'obtiens 'DCOM is disabled in C:\path...\scriptname.php on line 6', que

dois-je faire ?

Éditez votre php.ini et mettez

com.allow_dcom=true.

Est-il possible de charger/manipuler des objets ActiveX dans une page en

PHP ?

Cela n'a rien à voir avec PHP. Les objets ActiveX sont chargés côté

client s'ils sont demandés par le document HTML. Il n'y a aucune relation

avec le script PHP et il n'y a pas d'interaction directe possible

avec le serveur.

Est-il possible d'obtenir une instance fonctionnelle d'un composant ?

C'est possible avec l'aide de monikers. Si vous voulez des références

multiples au même mot d'instance, vous pouvez créer une instance de la

façon suivante :

$word= newCOM("C:\docs\word.doc");?>

Cela créera une nouvelle instance s'il n'y en a aucune disponible ou

retournera un descripteur vers l'instance courante, si elle est

disponible.

Y a-t-il moyen de manipuler un événement envoyé par un objet COM ?

Vous pouvez définir un moniteur d'événement (sink) et le lier en

utilisant

J'ai des problèmes quand j'invoque une méthode d'un objet COM qui expose

plus d'une interface. Que puis-je faire ?

La réponse est aussi simple que non satisfaisante. Je ne sais pas

exactement, mais je pense que vous ne pouvez rien faire. Si quelqu'un a

des informations spécifiques sur ce sujet, faites-le » moi savoir :)

Bon, PHP fonctionne avec COM, mais qu'en est-il de COM+ ?

COM+ étend COM avec un canevas pour gérer des composants via MTS et MSMQ

mais il n'y a rien de particulier que PHP doit supporter pour utiliser

de tels composants.

Si PHP peut manipuler des objets COM, peut-on imaginer d'utiliser des

ressources de composants, en conjonction avec PHP ?

PHP ne supporte pas encore les transactions. Ainsi, si une erreur se

produit, aucun rollback n'est initié. Si vous utilisez des composants

qui supportent les transactions, vous devrez implémenter le

gestionnaire de transactions par vous-même.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值