(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;
?>