<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/faq.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'faq.com.php',
    1 => 'PHP ve COM',
    2 => 'PHP ve COM',
  ),
  'up' => 
  array (
    0 => 'faq.php',
    1 => 'SSS',
  ),
  'prev' => 
  array (
    0 => 'faq.html.php',
    1 => 'PHP ve HTML',
  ),
  'next' => 
  array (
    0 => 'faq.misc.php',
    1 => '&Ccedil;eşitli Sorular',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'faq/com.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="faq.com" class="chapter">
  <h1 class="title">PHP ve COM</h1>

  

   <p class="para">
    PHP, Win32 platformlarında COM ve DCOM nesnelere erişim için
    kullanılabilir.
   </p>

  <div class="qandaset"><ol class="qandaset_questions"><li><a href="#faq.com.q1">
     
      Bazı hesaplamalar i&ccedil;in bir DLL derledim. Bu DLL&#039;li PHP altında
      &ccedil;alıştırmanın bir yolu var mı?
     
    </a></li><li><a href="#faq.com.q2">
     
      &#039;Unsupported variant type: xxxx (0xxxxx)&#039; iletisinin anlamı nedir?
     
    </a></li><li><a href="#faq.com.q3">
     
      PHP&#039;de g&ouml;rsel nesnelerle &ccedil;alışmak m&uuml;mk&uuml;n m&uuml;d&uuml;r?
     
    </a></li><li><a href="#faq.com.q4">
     
      Bir COM nesnesini bir oturumda saklayabilir miyim?
     
    </a></li><li><a href="#faq.com.q5">
     
      COM hatalarını yakalayabilir miyim?
     
    </a></li><li><a href="#faq.com.q6">
     
      Perl&#039;de olduğu gibi PHP betiklerinden DLL dosyaları &uuml;retebilir miyim?
     
    </a></li><li><a href="#faq.com.q7">
     
      &#039;Unable to obtain IDispatch interface for CLSID
      {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}&#039; iletisininin anlamı nedir?
     
    </a></li><li><a href="#faq.com.q8">
     
      Bir COM nesnesini bir uzak sunucudan nasıl &ccedil;alıştırabilirim?
     
    </a></li><li><a href="#faq.com.q9">
     
      &#039;DCOM is disabled in C:\path...\scriptname.php on line 6&#039; iletisini
      alıyorum. Ne yapabilirim?
     
    </a></li><li><a href="#faq.com.q10">
     
      Bir ActiveX nesnesini PHP ile bir sayfaya y&uuml;klemek ve kullanmak m&uuml;mk&uuml;n
      m&uuml;d&uuml;r?
     
    </a></li><li><a href="#faq.com.q11">
     
      Bir bileşenin &ccedil;alışan bir &ouml;rneğini almak m&uuml;mk&uuml;n m&uuml;d&uuml;r?
     
    </a></li><li><a href="#faq.com.q12">
     
      COM nesnesinden g&ouml;nderilen bir olayı işleme sokmanın bir yolu var mıdır?
     
    </a></li><li><a href="#faq.com.q13">
     
      Birden fazla aray&uuml;z i&ccedil;eren bir COM nesnesinin bir y&ouml;ntemini &ccedil;ağırmaya
      &ccedil;alışırken sorunlarla karşılaşıyorum. Ne yapabilirim?
     
    </a></li><li><a href="#faq.com.q14">
     
      PHP, COM ile &ccedil;alıştığına g&ouml;re COM+ ile de &ccedil;alışır, değil mi?
     
    </a></li><li><a href="#faq.com.q15">
     
      PHP, COM nesnelerle &ccedil;alıştığına g&ouml;re, &ouml;zkaynakları y&ouml;netmek &uuml;zere
      MTS&#039;yi PHP ile birlikte kullanmayı d&uuml;ş&uuml;nebilir miyiz?
     
    </a></li></ol></div>
   <dl class="qandaentry" id="faq.com.q1">
    <dt><strong>
     
      Bazı hesaplamalar için bir DLL derledim. Bu DLL&#039;li PHP altında
      çalıştırmanın bir yolu var mı?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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&#039;e erişebilirsiniz.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q2">
    <dt><strong>
     
      &#039;Unsupported variant type: xxxx (0xxxxx)&#039; iletisinin anlamı nedir?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q3">
    <dt><strong>
     
      PHP&#039;de görsel nesnelerle çalışmak mümkün müdür?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Genelde mümkündür, fakat PHP&#039;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&#039;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.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q4">
    <dt><strong>
     
      Bir COM nesnesini bir oturumda saklayabilir miyim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q5">
    <dt><strong>
     
      COM hatalarını yakalayabilir miyim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      COM eklentisi sizin de yakalayabileceğiniz
      <code class="literal">com_exception</code> istisnalarını yakalar. Bundan sonra ne
      yapılacağını belirlemek için <code class="literal">code</code> üyesini
      inceleyebilirsiniz.
     </p>
     <p class="para">
      COM hatalarını PHP tarafından sağlanan yollarla (@,
      track_errors, ...) yakalamak mümkün değildir.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q6">
    <dt><strong>
     
      Perl&#039;de olduğu gibi PHP betiklerinden DLL dosyaları üretebilir miyim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Hayır, maalesef PHP&#039;de böyle bir araç yoktur.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q7">
    <dt><strong>
     
      &#039;Unable to obtain IDispatch interface for CLSID
      {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}&#039; iletisininin anlamı nedir?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Bu hata pek çok sebepten ortaya çıkabilir:
      <ul class="itemizedlist">
       <li class="listitem">
         <span class="simpara">
          CLSID yanlıştır.
         </span>
        </li>
       <li class="listitem">
         <span class="simpara">
          İstenen DLL yoktur.
         </span>
        </li>
       <li class="listitem">
         <span class="simpara">
          İstenen bileşen IDispatch arayüzünü gerçeklemiyordur.
         </span>
        </li>
       </ul>
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q8">
    <dt><strong>
     
      Bir COM nesnesini bir uzak sunucudan nasıl çalıştırabilirim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Tıpkı bir yerel nesne gibi çalıştırabilirsiniz. Tek yapacağınız, COM
      kurucusuna ikinci bağımsız değişken olarak uzak makinenin IP adresini
      aktarmaktır.
     </p>
     <p class="para">
      <var class="filename">php.ini</var> dosyanızda
      <a href="com.configuration.php#ini.com.allow-dcom" class="link">com.allow_dcom</a><code class="literal">=</code><strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
      atamasını yapmış olmalısınız.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q9">
    <dt><strong>
     
      &#039;DCOM is disabled in C:\path...\scriptname.php on line 6&#039; iletisini
      alıyorum. Ne yapabilirim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      <var class="filename">php.ini</var> dosyanızı düzenlemek için açıp
      <a href="com.configuration.php#ini.com.allow-dcom" class="link">com.allow_dcom</a><code class="literal">=</code><strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
      atamasını yapın.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q10">
    <dt><strong>
     
      Bir ActiveX nesnesini PHP ile bir sayfaya yüklemek ve kullanmak mümkün
      müdür?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.com.q11">
    <dt><strong>
     
      Bir bileşenin çalışan bir örneğini almak mümkün müdür?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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
     </p>
     <div class="informalexample"><div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$yazı </span><span style="color: #007700">= new </span><span style="color: #0000BB">COM</span><span style="color: #007700">(</span><span style="color: #DD0000">"C:\docs\yazı.doc"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>
</div>
     <p class="para">
      Ç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.
     </p>
    </dd>
   </dl>
   <dl class="qandaentry" id="faq.com.q12">
    <dt><strong>
     
      COM nesnesinden gönderilen bir olayı işleme sokmanın bir yolu var mıdır?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Bir olay alıcıyı tanımlayabilir ve bunu
      <span class="function"><a href="function.com-event-sink.php" class="function">com_event_sink()</a></span> kullanarak bağlayabilirsiniz.
      PHP&#039;nin olay alıcı sınıfının bir iskeletini üretmesi için
      <span class="function"><a href="function.com-print-typeinfo.php" class="function">com_print_typeinfo()</a></span> işlevini kullanabilirsiniz.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q13">
    <dt><strong>
     
      Birden fazla arayüz içeren bir COM nesnesinin bir yöntemini çağırmaya
      çalışırken sorunlarla karşılaşıyorum. Ne yapabilirim?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Yanıt pek tatmin edici değil biliyorum. Aslında tam olarak ne
      yapılacağını bilmiyorum ama yapılabilecek bir şeyler olmalı.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q14">
    <dt><strong>
     
      PHP, COM ile çalıştığına göre COM+ ile de çalışır, değil mi?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      COM+, COM&#039;un bileşenlerini MTS ve MSMQ üzerinden yönetmek için bir
      arayüz ile genişletir. PHP&#039;nin bu tarz nesneleri desteklemesi için
      yapacağı özel bir şey yoktur.
     </p>
    </dd>
   </dl>

   <dl class="qandaentry" id="faq.com.q15">
    <dt><strong>
     
      PHP, COM nesnelerle çalıştığına göre, özkaynakları yönetmek üzere
      MTS&#039;yi PHP ile birlikte kullanmayı düşünebilir miyiz?
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      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.
     </p>
    </dd>
   </dl>

  
 </div>
<?php manual_footer($setup); ?>