(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Класс COM позволяет создавать совместимые с OLE объекты COM, вызывать их методы и получать доступ к их свойствам.
$obj = new COM("Application.ID")
$module_name
[, mixed $server_name
[, int $codepage
[, string $typelib
]]] )Конструктор класса COM. Параметры имеет следующие назначения:
NULL, будет использоваться значение приложения по умолчанию.
Обычно значение по умолчанию означает локальный хост, но в принципе,
администратор может задать запуск по умолчанию на другом сервере.
Если задано значение отличное от NULL, PHP откажется загружать объект
пока не будет разрешена опция конфигурации
.
Если server_name задан массивом, то он должен
содержать следующие элементы (регистрозависимые!). Обратите внимание,
что все эти опции необязательны (ну кроме того случая, что имя и пароль
друг без друга не имеют смысла). Если вы опустите строку Server, то
будет использован сервер по умолчанию и создаваемый объект не будет
обращать внимание на директиву .
server_name key |
тип | описание |
|---|---|---|
| Server | string | Имя сервера. |
| Username | string | Имя пользователя. |
| Password | string | Пароль для Username. |
| Flags | integer | Одна или несколько констант объедененных побитовым ИМИ:
CLSCTX_INPROC_SERVER,
CLSCTX_INPROC_HANDLER,
CLSCTX_LOCAL_SERVER,
CLSCTX_REMOTE_SERVER,
CLSCTX_SERVER и
CLSCTX_ALL. Значение по умолчанию равно
CLSCTX_SERVER если вы также пропустили
Server, или
CLSCTX_REMOTE_SERVER если не пропустили.
Описание значения данных констант читайте в документации Microsoft
по CoCreateInstance. Скорее всего вам никогда не понадобится использовать это.
|
CP_ACP (использовать системную кодировку ANSI по умолчанию -
будет использоваться по умолчанию, если параметр опущен),
CP_MACCP,
CP_OEMCP, CP_SYMBOL,
CP_THREAD_ACP (использовать кодировку/локаль запущенного
потока выполенения), CP_UTF7
и CP_UTF8. Также вы можете использовать номер кодировки.
Более подробно кодировки и их числовые значения описаны в документации
Microsoft.
Возвращаемые объекты являются перегруженными, тоесть PHP не видит каких либо фиксированных методов, как это происходит с обычными классами. Вместо этого свойства и доступ к методам передается через COM.
Начиная с PHP 5, PHP автоматически определяет методы, которые обращаются к свойствам по ссылкам и автоматически преобразуют стандартные переменные PHP в вид, который можно передавать по ссылке. Это означает, чт о вы можете вызывать методы не внося каких либо дополнений в свой код.
В PHP до версии 5, для обработки следующих методов средствами PHP без передачи в COM применялся ряд довольно некрасивых хаков. В PHP 5 это поведение исправлено. Ниже описано, как следует изменить ваши скрипты. Эти магические методы регистронезависимы.
Искуственно добавляет подсчет ссылок в объект COM.
Вам никогда не понадобится использовать этот метод. Он логически связан с методом Release(), описанным ниже.
Искуственно добавляет подсчет ссылок в объект COM.
Вам никогда не понадобится использовать этот метод. Он присутствует в PHP в качестве искуственного бага, служащего для обхода другого бага, из-за которого объект COM существовал дольше, чем должен бы.
Эти методы доступны только если функция
com_isenum() возвращает TRUE, в этом случае они скрывают
любые методы с такими же именами, присутствубщие в объекте COM.
Эти методы удалены в PHP 5, используйте вместо них
For Each.
Возвращает вариант представляющий SafeArray имеющий 10 элементов;
Каждый элемент будет пустым(NULL) вариантом. Эта функция должна
была вернуть массив состоящий из всех элементов итератора, но
так и не была дописана. Не используйте ее.
Возвращает вариант представляющий следующий элемент
итератора, или FALSE, если элементов не осталось.
Возвращает вариант представляющий предыдущий элемент
итератора, или FALSE, если элементов не осталось.
Перематывает итератор на первый элемент.
Пример #1 Первый пример
<?php
// запускаем word
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";
//делаем его активным окном
$word->Visible = 1;
//открываем пустой документ
$word->Documents->Add();
//Что то с ним делаем
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.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;
?>