Форум, знакомства, фото, чат, общение

Здравствуйте, гость ( Вход | Регистрация )

Приглашаем Информационных Партнеров!
> Случайные изображения












 
Reply to this topicStart new topic

> Php И Com

шпунтик
сообщение 14.11.2011, 10:28
Сообщение #1


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



PHP и COM
Технология COM (сокращение от «Component Object Model», то есть «модель составного объекта») обеспечивает взаимодействие между приложениями, работающими на разных языках и платформах. Такое взаимодействие в значительной мере способствует идее построения многократно используемых, легко сопровождаемых и адаптируемых программных компонентов (в последнее время к этим трем принципам проявляется повышенное внимание в области компьютерных технологий). Хотя COM обычно рассматривается как спецификация, ориентированная в первую очередь на продукты Microsoft, поддержка COM уже реализована во многих языках (например, в PHP, Java, C++ и Delphi) и существует на многих платформах, включая Windows, Linux и Macintosh.

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

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

PHP содержит несколько стандартных функций для работы с COM. Учтите, эти функции поддерживаются только в версии PHP для Windows! Прежде чем переходить к примерам, мы рассмотрим все эти функции.
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:29
Сообщение #2


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Поддержка COM в PHP

Стандартные функции PHP, предназначенные для работы с COM, создают объекты COM и используют их свойства и методы. Пожалуйста, не забывайте о том, что эта поддержка присутствует только в версии PHP для Windows. Следующие примеры были протестированы для Microsoft Word 2000. За информацией об объектах, методах и событиях, используемых в программе, обращайтесь на web-сайт MSDN (http://msdn.microsoft.com/library/officedev/off2000/ wotocobjectmodelapplication.htm).
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:29
Сообщение #3


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Создание экземпляров объектов COM

Экземпляры объектов COM создаются вызовом new, как при обычном объектно-ориентированном программировании. Синтаксис:

object new COM("обьекг.класс" [, string удаленный_адрес])

Параметр объект.класс определяет модуль COM, присутствующий на сервере. Необязательный параметр удаленный_адрес используется в том случае, если объект COM создается на удаленном компьютере. Допустим, вы хотите создать экземпляр объекта для приложения MS Word. При этом приложение Microsoft Word запускается так, словно вы запустили его вручную (разумеется, для этого MS Word должен быть установлен на компьютере). Команда имеет следующий синтаксис:

Код
$word=new COM("word.application") or die("Couldn't start Word!");


После того как экземпляр объекта COM будет создан, можно приступать к работе с различными методами и свойствами этого объекта. Допустим, вы захотели активизировать окно Word. Следующая команда изменяет атрибут видимости объекта, в результате чего графический интерфейс приложения отображается на экране:

$word->visible = 1:

He огорчайтесь, если эта команда выглядит непонятной. Вызов методов объектов COM рассматривается в следующем разделе.
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:30
Сообщение #4


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Вызов методов объекта COM

Методы объектов COM вызываются в типичном для ООП формате, с использованием ссылки из объектной переменной. Синтаксис:

объект->имя_метода([значение, ...])

Объект соответствует экземпляру объекта COM, созданному описанным выше способом. Параметр имя_метода определяет имя метода, определенного в классе объект. Необязательный параметр значение позволяет передавать параметры при вызове методов, допускающих (или требующих) дополнительных данных. Как и при вызове обычных функций, параметры разделяются запятыми. Если после создания экземпляра объекта COM, представляющего MS Word, вы захотите создать в приложении новый документ, просто вызовите соответствующий метод. Задача решается методом add( ) субкласса Documents экземпляра $word:

$word->Documents->Add( );

Обратите внимание: для вызова методов используется очень логичный синтаксис в стиле ООП. В результате выполнения этой команды в окне приложения MS Word открывается новый документ.
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:31
Сообщение #5


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Функция com_get( ) возвращает значение свойства объектов COM. Синтаксис:

mixed com_get(resource объект, string свойство)

Первый параметр определяет экземпляр объекта COM, а второй -- атрибут класса, к которому относится данный экземпляр.

Код
<?
// Создать экземпляр объекта для приложения MS Word
$word=new COM("word.application") or die("Couldn't start Word!");
// Режим CapsLock либо включен (свойство CapsLock = 0),
// либо выключен (свойство CapsLock = 1).
$flag = com_get(Sword->Application.CapsLock)
// Преобразовать значение Sflag (0 или 1) в логическое значение
if ($flag == 1) :
$flag = "YES";
else :
$flag = "NO";
endif;
// Вывести сообщение
print "CAPS Lock activated: $flag";
$word->Quit();
?>


Существует и другое решение -- значение атрибута CapsLock можно получить при помощи стандартного для ООП синтаксиса обращения к атрибутам. В предыдущем примере для этого следует заменить строку

$flag = com_get($word->Application,CapsLock)

следующей строкой:

$flag = $word->Application->CapsLock:

Атрибуты объекта позволяют получать разнообразную информацию о характеристиках приложения. Более того, многим атрибутам можно присваивать новые значения. Это делается при помощи функции com_set( ).
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:32
Сообщение #6


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Функция com_set( ) присваивает атрибуту объекта новое значение:

void com_set(resource объект, string свойство, mixed значение)

Первый параметр определяет экземпляр объекта COM, а второй -- атрибут класса, к которому относится данный экземпляр. Третий параметр определяет новое значение свойства.

Следующая программа (листинг 1.6) запускает Microsoft Word и активизирует окно приложения. Затем она создает новый документ, добавляет в него строку текста и выбирает режим сохранения документа (атрибут DefaultSaveFormat) в текстовом формате. Результат виден при открытии окна Сохранить как (Save As) -- в списке Тип файла (Save As Type) автоматически выбирается строка Только текст (Text Only). После сохранения документа приложение Microsoft Word закрывается.

Листинг 1.6. Выбор типа документа по умолчанию

Код
<?
// Создать экземпляр объекта для приложения MS Word
$word-new COMC'word.application") or die("Couldn't start Word!");
// Активизировать окно MS Word $word->visible = 1;
// Создать новый документ $word->Documents->Add();
// Вставить в документ фрагмент текста
$word->Selection->Typetext("php's com functionality is cool\n");
// Выбрать текстовый режим сохранения
$ok = com_set($word->Application, DefaultSaveFormat, "Text");
// Запросить у пользователя имя и сохранить документ.
// Обратите внимание: по умолчанию документ сохраняется
// в текстовом формате! $word->Documents[l]->Save;
// Выйти из MS Word
$word->Quit();
?>


Существует и другое решение -- новое значение атрибута DefaultSaveFormat можно присвоить непосредственно, как обычной переменной. В листинге 15.6 для этого следует заменить строку

$ok = com_set($word->Application, DefaultSaveFormat, "Text");

следующей строкой:

$word->Application->DefaultSaveFormat = "Text";

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

рый наглядно показывает, каких полезных и впечатляющих результатов можно добиться при помощи COM.
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:35
Сообщение #7


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



Запись информации в документ Microsoft Word

Допустим, вам потребовалось отформатировать информацию, загруженную из базы данных, в документе Word для построения отчета. Весь процесс автоматизируется всего в нескольких строках кода PHP. Алгоритм работы сценария выглядит следующим образом:

Подключиться к серверу MySQL и выбрать нужную базу данных.
Выбрать все данные из таблицы с сортировкой по фамилиям.
Открыть приложение Microsoft Word и создать новый документ.
Отформатировать и вывести все записи в документе.
Запросить у пользователя имя для сохранения документа.
Закрыть Microsoft Word.

Программный код приведен в листинге 1.7.

Листинг 1.7. Запись информации в документ Microsoft Word

Код
<?
// Создать соединение с сервером MySQL
$host = "localhost";
$user = "root";
$pswd = "";
$db = "book";
$address_table = "addressbook";
mysql_connect($host. $user, $pswd)
or die("Couldn't connect to MySQL server!");
mysql_select_db($db) or die("Couldn't select database!");
// Выбрать из базы данных все записи
$query = "SELECT * FROM $address_table ORDER BY lastjiame";
Sresult = mysql_query($query):
// Создать новый объект COM для приложения MS Word
$word=new COM("word.application") or die("Couldn't start Word!");
// Активизировать окно MS Word $word->visible = 1;
// Открыть пустой документ. $word->Documents->Add( );
// Перебрать записи из таблицы адресов
while($row = mysql_fetch_array($result));
$last_name = $row["last_name"];
$first_name = $row["first_name"];
$tel = $row["tel"];
$email = $row["email"];
// Вывести данные таблицы в открытый документ Word.
$word->Selection->Typetext("$last_name. $first_name\n"); $word->Selection->Typetext("tel. $tel\n"): $word->Selection->Typetext("email. $email:\n");
endwhile;
// Запросить у пользователя имя документа.
$word->Documents[l]->Save;
// Выйти из MS Word
$word->Quit();
?>


При всей простоте рассмотренный пример наглядно показывает, как писать приложения PHP для пересылки содержимого базы данных в приложения Windows. Можно написать и более сложное приложение, обеспечивающее синхронизацию данных, полученных из Web, из Microsoft Outlook. Все, что для этого нужно -- получить ссылку на объекты, свойства и методы Outlook, после чего можно переходить к экспериментам (обзор объектной модели всех приложений семейства Office приведен по адресу http://www.microsoft.com/officedev/article...g/toc/PGTOC.htm ).
Go to the top of the page
 
+Quote Post
шпунтик
сообщение 14.11.2011, 10:35
Сообщение #8


Опытный Пользователь
****

Группа: Малёк
Сообщений: 241
Регистрация: 20.1.2009
Пользователь №: 14435



полезные ресурсы, посвященные COM и найденные мной в Интернете:

http://msdn.microsoft.com/Library/techart/msdn_comppr.htm ;
http://www.microsoft.com/com/nets/drgui.asp ;
http://www.microsoft.com/com/default.asp ;
http://www.comdeveloper.com
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 


Текстовая версия Сейчас: 19.4.2024, 12:04

Php И Com - Форум




Рейтинг@Mail.ru Rambler's Top100

forum.ribca.net | Web Дизайн: WonderWorker | http://Ribca.Net