COM İşlevleri
PHP Manual

COM

(PHP 4 >= 4.1.0, PHP 5)

COMCOM sınıfı

$obj = new COM("Uygulama.ID")

Tanım

COM sınıfı, OLE uyumlu COM nesnesi başlatmaya, nesnenin yöntemlerine ve özelliklerine erişmeye olanak sağlar.

Yöntemler

com COM::COM ( string $modulAdi [, mixed $sunucuAdi [, int $kodSayfasi [, string $turKitapligi ]]] )

COM sınıf yapılandırıcısı. Değiştirgelerin anlamları:

modulAdi
Yüklenecek bileşen isimleri: ProgID, Sınıf ID veya Moniker olabilir. ProgID, tipik olarak uygulama veya DLL adı, "." nokta ve nesne adının birleşmesinden oluşur. Örneğin: Word.Application. Sınıf ID, bir sınıfı tekil olarak belirleyen UUID'dır. Moniker, özel bir isimlendirme şeklidir, URL şema kavramına benzer, kaynağı tanımlar ve nasıl yüklenmesi gerektiğini belirler. Örnek olarak, Word uygulamasını yükleyebilir ve word belgesinin tam dosya yolunu, modül adı şeklinde vererek belgeyi temsil eden bir nesne alabilir veya LDAP: dizgesini moniker olarak kullanır ve LDAP için ADSI arayüzünü kullanabilirsiniz.
sunucuAdi
Bileşenin yükleneceği ve çalıştırılacağı DCOM sunucu adı. Eğer NULL ise nesne, uygulama için öntanımlı olan yerel sunucu ile çalışacaktır fakat sistem yöneticisi başka bir sunucu üzerinde çalışacak şekilde ayarlayabilir. Sunucu için NULL olmayan bir değer verirseniz, PHP ayar seçeneğini TRUE olarak ayarlamadığınız sürece nesneyi yüklemeyi reddecektir.

sunucu_adi bir dizi ise büyüklük duyarlı olarak aşağıdaki elemanları içermelidir. Hepsinin seçimlik olduğuna dikkat edin (seçimlik olsalarda Username ve Password birlikte verilmelidir); Sunucu (Server) ihmal edilirse yukarıda anlatıldığı gibi öntanımlı olan kullanılacaktır ve nesnenin başlatılması ayarından etkilenmeyecektir.

DCOM sunucu adı
server_name anahtarı tür tanım
Server string Sunucunun adı.
Username string Bağlanacak kullanıcı adı.
Password string Username için parola.
Flags integer Aşağıdaki sabitlerden biri veya birleşimleri, mantıksal OR ile birleşirler: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER, CLSCTX_REMOTE_SERVER, CLSCTX_SERVER ve CLSCTX_ALL belirtilmedi ise, Server değiştirgesi ihmal edilirse, öntanımlı değer CLSCTX_SERVER'dir veya bir sunucu belirtirseniz CLSCTX_REMOTE_SERVER değeridir. Bu sabitlerin anlamları hakkında daha fazla bilgi için Microsoft CoCreateInstance belgesine bakınız; genelde hiçbir zaman bunları kullanmak zorunda kalmazsınız.

kodSayfasi
Evrensel dizgelere ve evrensel dizgelerden yapılacak dönüşümlerde kullanılacak kod sayfasını belirtir. Dönüşüm, COM nesnesinin yöntemlerinden birine geçirilen dizge değiştirgeye ve yöntemden geri dönen dizgelere uygulanır. Kod sayfası PHP 5'de yapışkandır, bunun anlamı nesnelere ve nesnelerden dönen varyantlara geçecektir. Olası değerler, CP_ACP (sistemde öntanımlı ANSI kod sayfasını kullan - eğer değiştirge ihmal edilirse alınacak değerdir), CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP (O an çalışan evre için kod sayfası/yerel ayarını kullan), CP_UTF7 ve CP_UTF8. Seçilen kod sayfası için sayı da kullanabilirsiniz, kod sayfaları ve sayısal değerleri hakkında daha ayrıntılı bilgi için Microsoft belgelerine bakınız.

Aşırı Yüklenmiş Yöntemler

Geri dönen nesne aşırı yüklenmiş bir nesnedir, bunun anlamı PHP düzenli sınıflarda gördüğü herhangi bir durağan yöntemi görmeyecektir; bunun yerine herhangi bir özellik veya yönteme erişim COM vasıtası ile gerçekleşecektir.

PHP 5'den itibaren, PHP özdevinimli olarak, değiştirgeleri gönderim vasıtası ile kabul eden yöntemleri bulmaya ve düzenli değişkenleri gönderim vasıtası ile geçirilecek şekilde çevirmeye başlamıştır. Bunun anlamı doğal olarak bir yöntemi çağırabilirsiniz; kodunuzda fazladan bir çalışma yapmak zorunda değilsiniz.

PHP 4'de değiştirgeleri gönderimli geçirebilmek için VARIANT sınıfı ile sarmalayarak bir nesne örneği oluşturmalısınız.

Taklit Yöntemler

PHP 5'den önceki sürümlerde, aşağıdaki bazı yöntemler COM'a geçirilmiyordu ve pek uygun olmayan yöntemler ile PHP'nin kendi içinde çalıştırılıyordu. PHP 5'de bunlar kaldırılmıştır; betiklerinizi nasıl düzelteceğinizi bulmak için aşağıda verilen ayrıntıları okuyun. Bu sihirli yöntem isimleri harf büyüklüğüne duyarsızdır.

void COM::AddRef ( void )

Yapay olarak COM nesnesine bir gönderim sayısı ekler.

Uyarı

Bu yöntemi kullanmaya ihtiyacınız olmaması gerekir. Aşağıdaki Release() yönteminin mantıksal tamamlayıcısıdır.

void COM::Release ( void )

Yapay olarak COM nesnesinden bir gönderim sayısı siler.

Uyarı

Bu yöntemi kullanmaya ihtiyacınız olmaması gerekir. Bu yöntem varlığını, COM nesnelerini çalışmaları gerekenden daha fazla çalışır tutan bir yazılım hatasına borçludur.

Yineleme için Taklit Yöntemler

Bu yöntemler, com_isenum() işlevi TRUE döndürüyorsa ulaşılabilirdir, COM nesnesi tarafından sağlanan aynı isimdeki herhangi bir yöntemi gizleyebilirler, PHP 5 ile birlikte bu yöntemlerin hepsi çıkartılmıştır, yerine For Each kullanmalısınız.

variant COM::All ( void )

10 elemanlı bir SafeArray'ı temsil eden bir varyant döndürür; her eleman empty/null varyant olabilir. Bu işlev, yineleyiciden bütün elemanları içeren bir dizi döndürmek için planlanmıştır fakat tamamlanmamıştır. Yani, bu işlevi kullanmayın.

variant COM::Next ( void )

Yineleyiciden sonraki elemanı temsil eden bir varyant döndürür veya daha fazla eleman kalmadıysa FALSE döndürür.

variant COM::Prev ( void )

Yineleyiciden önceki elemanı temsil eden bir varyant döndürür veya daha fazla eleman kalmadığı zaman FALSE döndürür.

void COM::Reset ( void )

Yineleyiciyi tekrar başa sarar.

COM örnekleri

Örnek 1 COM örneği (1)

<?php
//word başlatılıyor
$word = new COM("word.application") or die("Unable to instantiate Word");
echo 
"Loaded Word, version {$word->Version}\n";

//görünür hale getir
$word->Visible 1;

//boş bir belge aç
$word->Documents->Add();

//bir şeyler yaz/sakla 
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//kapat
$word->Quit();

//nesneyi serbest birak
$word null;
?>

Örnek 2 COM örneği (2)

<?php

$conn 
= new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password"
);

$rs $conn->Execute("SELECT * FROM sometable");    // Recordset

$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";
    
$rowcount++;            // rowcount'u arttır
    
$rs->MoveNext();
}

$rs->Close();
$conn->Close();

$rs null;
$conn null;

?>


COM İşlevleri
PHP Manual