Класс com

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

Введение

Класс com позволяет создавать экземпляры OLE-совместимого COM-объекта, вызывать его методы и получать доступ к его свойствам.

Обзор классов

class com extends variant {
/* Методы */
public __construct(
    string $module_name,
    array|string|null $server_name = null,
    int $codepage = CP_ACP,
    string $typelib = ""
)
}

Перегруженные методы

Возвращаемые объекты являются перегруженными, то есть PHP не видит каких-либо фиксированных методов, как это происходит с обычными классами. Вместо этого свойства и доступ к методам передаётся через COM.

PHP автоматически определяет методы, которые обращаются к свойствам по ссылкам и автоматически преобразуют стандартные переменные PHP в вид, который можно передавать по ссылке. Это означает, что вы можете вызывать методы не внося каких-либо дополнений в свой код.

Примеры использования com

Пример #1 Первый пример

<?php
// запускаем word
$word = new com("word.application") or die("Невозможно создать экземпляр Word");
echo
"Загружен Word, версия {$word->Version}\n";

//делаем его активным окном
$word->Visible = 1;

//открываем пустой документ
$word->Documents->Add();

//Что то с ним делаем
$word->Selection->TypeText("Это проверка...");
$word->Documents[1]->SaveAs("Бесполезный тест.doc");

//закрываем word
$word->Quit();

//высвобождаем ресурсы объекта
$word = null;
?>

Пример #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"); // Набор записей

$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++; // увеличиваем счётчик строк
$rs->MoveNext();
}

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

$rs = null;
$conn = null;

?>

Содержание