PHP, Win32 platformlarında COM ve DCOM nesnelere erişim için kullanılabilir.
Bu basit bir DLL ise bunu PHP altında çalıştırmanın bir yolu yoktur. Eğer DLL bir COM sunucusu içeriyor ve IDispatch arayüzünü gerçekliyorsa bu DLL'e erişebilirsiniz.
Düzinelerce VARIANT türü ve bunların birleşimleri vardır. Bunların çoğu desteklenmekteyse de bir kısmı halen gerçeklenme aşamasındadır. Diziler tamamen desteklenmemektedir. PHP ve COM arasında sadece tek boyutlu diziler aktarılabilmektedir. Lütfen bunu bir hata olarak raporlayın (hala raporlanmamışsa) ve bunu yaparken mümkün olduğunca fazla bilgi verin.
Genelde mümkündür, fakat PHP'deki gibi çoğunlukla HTTP sunucusu bağlamında işlem yapan bir betik dili olarak kullanılırlar. Bu bakımdan görsel nesneler hiçbir zaman sunucunun masaüstünde görünmezler. PHP'yi uygulama yazmak için kullanacaksanız (PHP-GTK örneğinde olduğu gibi), görsel nesnelerle COM üzerinden çalışmak için herhangi bir sınırlama yoktur.
Hayır, saklayamazsınız. COM nesne örnekleri birer özkaynak olarak ele alınır. Bu bakımdan sadece tek betiklik bir bağlamda kullanılabilirler.
COM eklentisi sizin de yakalayabileceğiniz com_exception istisnalarını yakalar. Bundan sonra ne yapılacağını belirlemek için code üyesini inceleyebilirsiniz.
COM hatalarını PHP tarafından sağlanan yollarla (@, track_errors, ...) yakalamak mümkün değildir.
Hayır, maalesef PHP'de böyle bir araç yoktur.
Bu hata pek çok sebepten ortaya çıkabilir:
Tıpkı bir yerel nesne gibi çalıştırabilirsiniz. Tek yapacağınız, COM kurucusuna ikinci değiştirge olarak uzak makinenin IP adresini aktarmaktır.
php.ini dosyanızda
com.allow_dcom=TRUE
atamasını yapmış olmalısınız.
php.ini dosyanızı düzenlemek için açıp
com.allow_dcom=TRUE
atamasını yapın.
Bunun için PHP ile bir şey yapılamaz. HTML belge tarafından istendikleri takdirde ActiveX nesneler istemci tarafında yüklenirler. PHP betiğiyle bir ilgileri olmadığından sunucu taraflı doğrudan etkileşim mümkün değildir.
Bu, takma adların yardımı ile mümkündür. Aynı yazı örneği için çok sayıda başvuru edinmek için örneği şöyle oluşturabilirsiniz:I
<?php
$yazı = new COM("C:\docs\yazı.doc");
?>
Çalışan bir örnek olmadığı takdirde bu yeni bir örnek oluşturur, aksi takdirde çalışan örnek için bir başvuru döndürür.
Bir olay alıcıyı tanımlayabilir ve bunu com_event_sink() kullanarak bağlayabilirsiniz. PHP'nin olay alıcı sınıfının bir iskeletini üretmesi için com_print_typeinfo() işlevini kullanabilirsiniz.
Yanıt pek tatmin edici değil biliyorum. Aslında tam olarak ne yapılacağını bilmiyorum ama yapılabilecek bir şeyler olmalı. Bu konuda bilgisi olar biri varsa lütfen » bana bildirsin. :)
COM+, COM'un bileşenlerini MTS ve MSMQ üzerinden yönetmek için bir arayüz ile genişletir. PHP'nin bu tarz nesneleri desteklemesi için yapacağı özel bir şey yoktur.
PHP henüz MTS hareketlerini işleme sokamamaktadır. Bu bakımdan, bir hata oluşursa hareketi başa sarmak mümkün değildir. MTS hareketlerini destekleyen bileşenleri kullanmak niyetindeyseniz hareket yönetimini kendiniz gerçeklemek zorundasınız.