COM (акроним от Component Object Model) — это объектно-ориентированный слой
(и связанные с ним сервисы), базирующийся на DCE RPC (открытый стандарт), который определяет
общие соглашения, позволяющие коду, написанному на любом языке вызывать
и взаимодействовать с кодом, написанным на любом другом языке (при условии, что эти языки
являются COM-ориентированными). Не только код может быть написан на любом языке, но даже
нет необходимости, чтобы он был частью одного и того же исполняемого файла: код может быть загружен
из библиотеки DLL, может быть найден в другом процессе на одном и том же компьютере или,
с помощью DCOM (Distributed COM), может быть найден в другом процессе на удалённой машине, и все это
без необходимости вашему коду знать где находится компонент.
Подмножество COM, известное как OLE Automation, включает набор
COM-интерфейсов, которые позволяют осуществлять лёгкое связывание COM-объектов, также любой
объект можно проанализировать и вызывать во время работы без знания о деталях его работы
на этапе компиляции. PHP-модуль COM использует интерфейсы OLE Automation,
позволяющие вам создавать и вызывать совместимые объекты из ваших скриптов.
Говоря техническим языком, это следовало бы назвать «Модуль OLE Automation для PHP»,
так как не все COM-объекты являются OLE-совместимыми.
Теперь, почему вам следует использовать COM? COM — один из основных способов склеить вместе приложения и компоненты на платформе Windows. Используя COM, вы можете запустить Microsoft Word, заполнить шаблон документа и сохранить результаты как документ Word, и затем отправить посетителю вашего веб-сайта. Вы также можете использовать COM для выполнения задач администрирования для вашей сети и конфигурирования вашего IIS-сервера. Это только обычные применения, с COM вы сможете больше.
Дополнительно модуль поддерживает создание экземпляра класса и создание .NET-сборок, используя слой взаимодействия с COM, предоставляемый Microsoft.
If you are trying to get the properties of a Word document opened via COM object, you may need to define some constants in your script like so.
<?php
define('wdPropertyTitle', 1);
define('wdPropertySubject', 2);
define('wdPropertyAuthor', 3);
define('wdPropertyKeywords', 4);
define('wdPropertyComments', 5);
define('wdPropertyTemplate', 6);
define('wdPropertyLastAuthor', 7);
$word = new COM("word.application") or die ("Could not initialise MS Word object.");
$word->Documents->Open(realpath("Sample.doc"));
$Author = $word->ActiveDocument->BuiltInDocumentProperties(wdPropertyAuthor);
echo $Author;
?>