<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- splitted from ./en/functions/com.xml, last change in rev 1.12 -->
<phpdoc:classref xml:id="class.com" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
 <titleabbrev>com</titleabbrev>
 <title>The com class</title>
 <partintro>

<!-- {{{ com intro -->
  <section xml:id="com.intro">
   &reftitle.intro;
   <para>
    The com class allows you to instantiate an OLE compatible COM object and
    call its methods and access its properties.
   </para>
  </section>
<!-- }}} -->

  <section xml:id="com.synopsis">
   &reftitle.classsynopsis;

<!-- {{{ Synopsis -->
   <classsynopsis class="class">
    <ooclass>
     <classname>com</classname>
    </ooclass>

    <ooclass>
     <modifier>extends</modifier>
     <classname>variant</classname>
    </ooclass>

    <classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
    <xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.com')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='com'])">
     <xi:fallback/>
    </xi:include>
   </classsynopsis>
<!-- }}} -->

  </section>

  <section xml:id="class.com.overloadedmethods">
   <title>Overloaded Methods</title>
   <para>
    The returned object is an overloaded object, which means that PHP does
    not see any fixed methods as it does with regular classes; instead, any
    property or method accesses are passed through to COM.
   </para>
   <para>
    PHP will automatically detect methods that accept
    parameters by reference, and will automatically convert regular PHP
    variables to a form that can be passed by reference.  This means that you
    can call the method very naturally; you needn't go to any extra effort in
    your code.
   </para>
  </section>

  <section xml:id="class.com.examples">
   <title>com examples</title>
   <para>
    <example xml:id="example.com1">
     <title>com example (1)</title>
     <programlisting role="php">
<![CDATA[
<?php
// starting word
$word = new com("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";

//bring it to front
$word->Visible = 1;

//open an empty document
$word->Documents->Add();

//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//closing word
$word->Quit();

//free the object
$word = null;
?>
]]>
    </programlisting>
    </example>
   </para>
   <para>
    <example xml:id="example.com2">
     <title>com example (2)</title>
     <programlisting role="php">
<![CDATA[
<?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++;            // increments rowcount
    $rs->MoveNext();
}

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

$rs = null;
$conn = null;

?>
]]>
     </programlisting>
    </example>
   </para>
  </section>

 </partintro>

 &reference.com.entities.com;

</phpdoc:classref>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
