(PHP 4 >= 4.1.0, PHP 5)
COM — COM sınıfı
$obj = new COM("Uygulama.ID")
COM sınıfı, OLE uyumlu COM nesnesi başlatmaya, nesnenin yöntemlerine ve özelliklerine erişmeye olanak sağlar.
COM sınıf yapılandırıcısı. Değiştirgelerin anlamları:
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.
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. |
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.
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.
Yapay olarak COM nesnesine bir gönderim sayısı ekler.
Bu yöntemi kullanmaya ihtiyacınız olmaması gerekir. Aşağıdaki Release() yönteminin mantıksal tamamlayıcısıdır.
Yapay olarak COM nesnesinden bir gönderim sayısı siler.
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.
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.
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.
Yineleyiciden sonraki elemanı temsil eden bir varyant döndürür veya daha fazla eleman kalmadıysa FALSE döndürür.
Yineleyiciden önceki elemanı temsil eden bir varyant döndürür veya daha fazla eleman kalmadığı zaman FALSE döndürür.
Yineleyiciyi tekrar başa sarar.
Ö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;
?>