Manußl PHP | ||
---|---|---|
P°edchßzejφcφ | Dal╣φ |
PHP lze na platformßch Win32 pou╛φt k p°φstupu k objekt∙m COM a DCOM.
1. Zkompiloval jsem knihovnu DLL k n∞jak²m v²poΦt∙m. Existuje zp∙sob, jak tuto knihovnu spustit pod PHP?
Pokud je to jednoduchß DLL knihovna, zatφm ji nenφ mo╛nΘ spustit z PHP. Pokud v╣ak tato knihovna obsahuje COM server, m∙╛ete k nφ p°istupovat, pokud implementuje interface IDispatch.
Existujφ tucty typ∙ VARIANT a jejich kombinacφ. V∞t╣ina z nich je ji╛ podporovßna, ale n∞kolik z nich teprve musφ b²t implementovßno. Pole nejsou podporovßna pln∞. Mezi PHP a COM lze vym∞≥ovat pouze jednorozm∞rnß indexovanß pole. Pokud najdete jinΘ typy, kterΘ nejsou podporovßny, ohla╣te je prosφm jako chybu - bug (pokud ji╛ nebyly ohlß╣eny) a poskytn∞te o nich tolik informacφ, kolik m∙╛ete.
Obecn∞ je, ale proto╛e PHP se nejΦast∞ji pou╛φvß jako webovsk² skriptovacφ jazyk, b∞╛φ v prost°edφ WWW serveru, a proto se vizußlnφ objekty nezobrazujφ na plo╣e displeje serveru. Pokud pou╛φvßte PHP pro aplikaΦnφ skriptovßnφ, nap°. spoleΦn∞ s PHP-GTK, neexistuje omezenφ p°φstupu a manipulace s vizußlnφmi objekty pomocφ COM.
Nem∙╛ete. S instancemi COM se naklßdß jako s prost°edky a proto jsou k dispozici pouze v kontextu jedinΘho skriptu.
Momentßln∞ nenφ mo╛nΘ zachycovat chyby COM krom∞ zp∙sob∙ poskytovan²ch samotn²m PHP (@, track_errors, ...), nicmΘn∞ p°em²╣lφme o zp∙sobu, jak to implementovat.
Ne, v PHP bohu╛el nenφ takov² nßstroj k dispozici.
7. Co znamenß 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'?
Tato chyba m∙╛e mφt vφce p°φΦin:
hodnota CLSID je chybnß
chybφ po╛adovanß DLL knihovna
po╛adovanß komponenta neimplementuje interface IDispatch
P°esn∞ tak, jak spou╣tφte mφstnφ objekty. Musφte pouze pou╛φt IP adresu vzdßlenΘho stroje jako druh² parametr konstruktoru COM.
Ujist∞te se, ╛e je nastaveno com.allow_dcom=true v souboru php.ini.
Upravte soubor php.ini - nastavte tam com.allow_dcom=true.
To nemß s PHP nic spoleΦnΘho. Objekty ActiveX se naΦφtajφ na stran∞ klienta, pokud jsou vy╛ßdßny HTML dokumentem. Nemß to ╛ßdnou souvislost s PHP skriptem a proto nenφ mo╛nß ╛ßdnß p°φmß interakce na stran∞ serveru.
Je to mo╛nΘ pomocφ "moniker∙". Pokud chcete zφskat vφce referencφ na tutΘ╛ instanci, m∙╛ete vytvo°it tuto instanci tφmto zp∙sobem:
$word = new COM("C:\docs\word.doc"); |
Toto vytvo°φ novou instanci, pokud nenφ k dispozici ╛ßdnß b∞╛φcφ instance, resp. vrßtφ handle na b∞╛φcφ instanci.
13. Mßm problΘmy, kdy╛ se pokou╣φm vyvolat metodu objektu COM, kterß vystavuje vφce ne╛ jeden interface. Co mßm d∞lat?
Odpov∞∩ je stejn∞ tak jednoduchß, jako neuspokojivß. Nelze to °φci p°esn∞, ale asi nem∙╛ete d∞lat nic. Pokud mß n∞kdo specifickΘ informace o tomto problΘmu, a╗ laskav∞ napφ╣e sem.
COM+ roz╣i°uje COM rßmec pro sprßvu komponent p°es MTS a MSMQ, ale nenφ to nic zvlß╣tnφho na to, aby PHP muselo takovΘ komponenty podporovat.
15. Jestli╛e m∙╛e PHP manipulovat s objekty COM, lze si p°edstavit pou╛itφ MTS ke sprßv∞ prost°edk∙ komponent spoleΦn∞ s PHP?
PHP samotnΘ nem∙╛e zatφm obsluhovat transakce. Proto kdy╛ nastane chyba, nenφ iniciovßn ╛ßdn² rollback. Pokud pou╛φvßte komponenty, kterΘ podporujφ transakce, budete muset implementovat vlastnφ mechanismus sprßvy transakcφ.
P°edchßzejφcφ | Dom∙ | Dal╣φ |
PHP a HTML | Nahoru | PHP a jinΘ jazyky |