Приступаем к работе с Project Zero, WebSphere sMash и PHP

Простое упражнение с примером Ajax Web 2.0-приложения, разработанного при помощи Zero и PHP

Project Zero предоставляет интегрированную среду быстрой разработки интерактивных Web-приложений, основанных на популярных Web-технологиях, таких как PHP. Данное упражнение демонстрирует, насколько легко работать с Project Zero, начиная с установки средств разработки и заканчивая созданием Ajax Web 2.0-примера, использующего PHP в качестве серверного языка сценариев. По ходу рассматривается операция экспорта приложения вместе с примерами отладки и расширения Web 2.0-приложения.

Эд Слэттери, инженер-программист, консультант, IBM

Эд Слэттери (Ed Slattery) работает в группе PHP, где занимается синтаксическим анализатором и сканнером системы времени исполнения P8.



Джуди Тэйлор, инженер-программист, IBM

Джуди Тэйлор (Judy Taylor) - специалист по программному обеспечению с открытыми исходными кодами в группе PHP. Имеет опыт тестирования программного обеспечения.



08.10.2008

Примечание редактора. IBM® WebSphere® sMash и IBM WebSphere sMash Developer Edition основаны на широко приветствуемом проекте инкубатора Project Zero (EN). Project Zero - это сообщество разработчиков WebSphere sMash, которое по-прежнему будет предлагать бесплатную платформу разработки приложений с новейшими сборками, функциональными возможностями и поддержкой.

Перед началом работы

Потратьте несколько минут на ознакомление с Web-сайтом Project Zero (EN). Вы можете подключиться к сообществу Project Zero, принять участие в проекте или в дискуссионном форуме, на котором можно комментировать каждую стадию разработки проекта. В данной статье предполагается, что у вас установлен подходящий Java™ Development Kit (JDK). Вы также должны быть знакомы с концепциями PHP и JavaScript.

Обзор Project Zero

Project Zero предоставляет интегрированную среду для быстрой и простой разработки интерактивных Web-приложений. Целью проекта является предоставление полной инфраструктуры для развертывания в Web, для того чтобы разработчики приложений смогли сконцентрироваться на бизнес-логике. Чтобы показать, насколько легко работать с этой платформой, в статье в пошаговом режиме разбирается пример, в котором все начинается с пустого каталога, затем устанавливаются необходимые средства разработки и разрабатывается пример Ajax Web 2.0-приложения, использующего PHP в качестве серверного языка сценариев. Средой разработки является Eclipse.

Инструкций, приведенных в данной статье, должно быть достаточно для выполнения упражнения, но вы можете найти подробные инструкции по загрузке и установке Project Zero для PHP на сайте Project Zero (см. раздел "Ресурсы").

Установка Project Zero для PHP

Начнем с установки Project Zero для PHP. Выполните следующие действия:

  1. Создайте новый пустой каталог (например, zero_example).
  2. Загрузите интегрированную среду разработки на PHP в Eclipse (ссылка приведена в разделе "Ресурсы"). Примечание. На странице загрузки необходимо выбрать версию сборки (в данном упражнении использовалась stable builds/S20070910-RC1, но версия может поменяться, поэтому вы должны выбрать самую последнюю стабильную сборку). Важно! Более ранние версии, например, S20070611-M1, больше не работают с текущей версией Project Zero. Загрузите .zip-файл All-in-One PDT, подходящий вашей операционной системе (например, pdt-all-in-one-<release_name>-win32.zip), и разархивируйте его в каталог zero_example. Например, при использовании Eclipse ваш каталог будет называться примерно так: zero_example/<pdt_release_name>/eclipse.

После установки интегрированной среды разработки можно установить плагины Eclipse, позволяющие вести разработку на PHP в Project Zero. Выполните следующие действия:

  1. Запустите копию eclipse.exe, расположенную в каталоге zero_example/eclipse, и при запросе назначьте новое имя рабочей области (workspace), например, zero_example/workspace.
  2. В меню выберите Help > Software Updates > Find and Install....
  3. В появившемся диалоговом окне выберите Search for new features to install и нажмите кнопку Next.

Теперь можно добавить новый удаленный сайт для поиска обновлений программного обеспечения:

  1. Нажмите кнопку New remote site и в появившемся диалоговом окне введите имя сайта, например, Project Zero.
  2. Назначьте новому удаленному сайту http://www.projectzero.org/update/zero.eclipse.php.latest.
  3. Нажмите кнопку OK и в следующем диалоговом окне нажмите кнопку Finish.
  4. В диалоговом окне результатов поиска выберите элемент whole Project Zero в древовидном списке и нажмите кнопку Next.
  5. Подтвердите лицензионное соглашение и нажмите кнопку Next.
  6. Нажмите кнопку Finish и Install All.

Интегрированная среда Project Zero для PHP установлена. Появится запрос на перезапуск Eclipse, и после перезапуска среда будет готова к использованию. Теперь можно создать простое PHP-приложение.

Разработка приложения 1. MyFirstProject

Первым действием при разработке вашего первого приложения является создание нового проекта Zero в Eclipse:

  1. Выберите File > New > Project... и разверните категорию Zero в диалоговом окне (см. рисунок 1).
  2. Выберите Project Zero PHP Application и нажмите кнопку Next.
  3. Укажите имя проекта (например, MyFirstProject) и нажмите кнопку Finish. Создастся новый проект.
Рисунок 1. Категория Project Zero
Рисунок 1. Категория Project Zero

Поскольку мы выбрали Project Zero PHP Application, Zero уже знает о том, что мы собираемся использовать PHP, поэтому он помещает подходящий файл php.ini в каталог config проекта. В листинге 1 приведен фрагмент содержимого этого INI-файла. Показанные в листинге 1 строки указывают PHP загрузить расширения Zero.

Листинг 1. PHP-расширения Project Zero
extension = zero.php.ZeroExtension
extension = zero.php.JSONExtension
extension = zero.php.LoginServiceExtension
extension = zero.php.ACFExtension
extension = zero.data.php.QueryExtension
extension = zero.php.XMLExtension
extension = zero.php.NetworkExtension
extension = zero.php.URIUtilsExtension

Zero также добавил необходимые PHP-зависимости в файл ivy.xml. Выполнив двойной щелчок левой кнопкой мыши на этом файле в navigator, вы увидите зависимости zero.php в списке (для просмотра списка других модулей, которые можно было бы добавить, нажмите кнопку Add).

Теперь в Zero разрешен PHP, а в PHP разрешены Zero-расширения, поэтому система времени исполнения Zero может вызывать механизм P8 для обработки входящих данных из Web-приложений. PHP может использовать сервисы PHP-расширений Zero для получения глобального контекста (Global Context) Zero.

Zero Global Context - это одна из основ Zero-разработки. Все, что необходимо серверу от клиента, можно разместить в Global Context (дополнительная информация приведена в документации по Zero "Руководстве разработчика по ядру"; ссылка приведена в разделе "Ресурсы").

Следующим шагом является создание простого PHP-приложения для ввода некоторых данных на стороне клиента и чтения их на стороне сервера при помощи PHP-сценария.

Создание PHP-приложения

Перед началом работы убедитесь, что находитесь в перспективе PHP, посмотрев на название в правом верхнем углу окна. Если это не перспектива PHP, нажмите пиктограмму со знаком плюс в правом верхнем углу окна для изменения перспективы.

Затем выполните следующие действия:

  1. Разверните каталог MyFirstProject.
  2. Щелкните правой кнопкой мыши на каталоге public и создайте новый PHP-файл под названием MyFirstForm.php. Скопируйте исходный код, показанный в листинге 2, в форму, переопределяя PHP-теги по умолчанию, и сохраните ее:
Листинг 2. Простая форма
<!--Форма ввода с одним полем и одной кнопкой-->
<html>
<head>
   <title>My First Form</title>
</head>
<body>
   <form name="input" action="/action.php" method="POST">
      <input type="text" name="item">
      <input type="submit" name="action" value="Post a message">
   </form>   
</body>
</html>

Примечание. Расширение файла - .php, но на самом деле он не содержит какого-либо PHP-кода; это просто HTML, и расширение .html тоже подходит. В эту форму можно было бы включить PHP-сценарий; мы собираемся создать еще одну форму action.php для обработки передаваемой информации. Обратите внимание на строку кода form action='action.php', которая указывает серверу, какой сценарий обрабатывает действие.

Теперь создайте второй PHP-файл в каталоге public под названием action.php, скопируйте в него код из листинга 3 и сохраните файл:

Листинг 3. Простой PHP-код обработки
<html>
<body>
<b>Processing your entry</b>
<?php

$method = zget('/request/method');
echo "<p>The request was a $method</p>";

$keys = zlist('/request/params', true);

echo "<p>Here is the data:</p>";

echo "<table cellspacing='0' cellpadding='0' border='1' >";
echo "<tr><td>Key</td><td>Values</td></tr>";

for ($i=0;$i<count($keys);$i++) {
  echo  "<tr><td>$keys[$i]</td>";
  echo "<td>";
  $value = zget($keys[$i]);
  if (is_array($value)) {
  	 for ($j=0;$j<count($value);$j++) {
  	 	echo "$value[$j] ";
  	 }
  } else {
  	echo "$value";	
  }
  echo "</td>";
  echo "</tr>";
}

echo "</table>";
?>
</body>
</html>

Код в листинге 3 является смесью HTML и PHP. PHP-код выводит некоторый HTML-код, но использует значения, введенные в оригинальную форму. Частью Project Zero этой формы являются следующие строки:

Листинг 4. Получение элементов из Global Context
$method = zget('/request/method');
$keys = zlist('/request/params', true);
...
$value = zget($keys[$i]);

Первая строка листинга 4 использует метод zget(), являющийся частью системы времени исполнения Zero, которая была включена в PHP путем добавления Zero-расширений в файл php.ini. Этот метод получает одно значение из глобального контекста. Вторая строка демонстрирует применение zlist(), где в глобальный контекст передается список пар ключ/значение, в данном случае '/request/params'. Цикл, включающий строку 3, работает по всем полученным ключам, получает соответствующее значение и выводит в виде массива или строки.

Запуск PHP-приложения

Вместе эти две формы представляют собой готовый пример Zero-приложения. Щелкните правой кнопкой мыши на имени проекта в Eclipse и выберите Run as > Project Zero Application; Web-сервер запускается на порту 8080 localhost. Теперь в браузере можно перейти на страницу http://localhost:8080/MyFirstForm.php. Вы должны увидеть нашу форму ввода. Ведите какие-нибудь данные, например, This is my zero project, и нажмите кнопку. Вы должны увидеть выходную форму с таблицей, отображающей введенные данные (см. рисунок 2).

Рисунок 2. Пример вывода информации
Рисунок 2. Пример вывода информации

Можно нажать кнопку Back в браузере для возврата в форму ввода и ввести другие данные, которые отобразятся после повторного нажатия post a message. Для остановки приложения нажмите квадратный красный символ в консоли.

Ключом для понимания Project Zero является знание о том, какие элементы данных можно запросить и установить из Global Context (где метод get() производит поиск) и как использовать другие плагины (такие как data zero) для хранения и извлечения данных из баз данных.

Экспорт приложения

Мой .zip-файл не появляется в Eclipse

.zip-файл записывается на диск, но он не является артефактом, сгенерированным Eclipse, поэтому Eclipse еще не зарегистрировал его присутствие. Щелкните правой кнопкой мыши на названии проекта и выберите Refresh.

Перед экспортом проекта необходимо остановить Zero-сервер, нажав красный квадрат в заголовке над закладкой console. После остановки сервера выполните следующие действия, чтобы начать экспорт приложения:

  1. Щелкните правой кнопкой мыши в Eclipse и выберите Export....
  2. Разверните категорию Zero и выберите Project Zero Export Wizard.
  3. Выберите название каталога для экспорта и отметьте флажок для включения вашего источника.
  4. Наконец, выберите Finish, и ваш проект экспортируется как .zip-файл в выбранный каталог.

.zip - это просто средство транспортировки проекта. Если вы хотите запустить его из командной строки, нужно установить систему времени исполнения командной строки Zero и разархивировать проект в ее каталог apps.

Для развертывания приложения на Zero-сервере и получения системы времени исполнения командной строки выполните инструкции, приведенные в документации по Project Zero (см. раздел "Ресурсы"). Необходимо выполнить инструкции по установке CLI до запуска "zero seed", который собирает библиотеки ядра Zero. Остальные инструкции этого раздела документации предназначены для установки примеров и создания каталога apps, поэтому вы можете либо продолжить их выполнение и установить примеры для дальнейшего использования, либо просто создать каталог apps самостоятельно при помощи Windows® Explorer. Выполнив эти действия, вернитесь к данному пункту упражнения.

Проблемы при развертывании?

При получении ошибки 500 во время загрузки MyFirstForm.php, прежде всего, проверьте наличие файла php.ini в каталоге config. Если его там нет, найдите этот файл в другом примере проекта или в каталоге, в который установили PHP.

Если при загрузке формы action возникает ошибка unknown method get(), проверьте наличие zero-расширений, определенных в вашем файле php.ini.

Теперь, выполните следующие действия для запуска приложения:

  1. Разархивируйте .zip-файл, экспортированный из Eclipse, в каталог <zerohome>/apps. При этом создастся структура каталогов в папке apps для вашего приложения. В зависимости от того, как вы разархивировали .zip-файл, может иметься единственный каталог приложения (например, MyFirstProject), либо каталог base, содержащий этот каталог.
  2. Необходимо изменить каталог на base (в нем должен иметься подкаталог config) и выполнить команду zero resolve
  3. Наконец, выполните команду zero run. Должен запуститься тот же сервер на порту 8080, который вы ранее видели в Eclipse. Теперь ваш браузер должен уметь загружать файл MyFirstForm.php.
  4. Для повторной остановки сервера просто нажмите комбинацию клавиш Ctrl-C в командной строке.

Добавление функциональности Ajax - приложение 2. Использование Ajax и Project Zero в MyFirstDojoApp

Теперь, после создания простого PHP-приложения, пора убедиться в том, насколько просто добавить функциональность Ajax, используя JavaScript и Dojo в другом приложении. Начните с выполнения следующих действий:

  1. Сначала создайте новый проект Zero-приложения в Eclipse, выбрав File > New > Project....
  2. Выберите стиль приложения Project Zero PHP и нажмите кнопку Next.
  3. Назовите проект (например, MyFirstDojoApp) и нажмите кнопку Finish.

В этом приложении мы также будем использовать Dojo, поэтому необходимо указать Zero следующее:

  1. Разверните MyFirstDojoApp и каталог config.
  2. Откройте файл ivy.xml и в панели Zero Package Information нажмите кнопку Add....
  3. В окне Dependency Selection найдите зависимость Dojo (вверху списка на рисунке 3) и, при наличии, перейдите на шаг 8.
  4. Если зависимости Dojo в списке нет, нажмите кнопку Manage Repository (см. рисунок 3).
  5. В окне Manage Repository нажмите кнопку Search (не вводя каких-либо других данных).
  6. Через несколько секунд (Searching Repositories) отобразится список (см. рисунок 3b).
  7. Выберите зависимость Dojo, нажмите кнопку Download, а затем Close.
  8. Выберите Dojo... в окне Dependency Selection и нажмите кнопку OK (Dojo должен добавиться в список зависимостей в панели Zero Package Information).
  9. Сохраните изменения, используя меню File > Save.
Рисунок 3. Зависимость Dojo
Рисунок 3. Зависимость Dojo
Рисунок 3b. Окно Manage Repository
Рисунок 3b. Окно Manage Repository

Обновление Zero-зависимостей

Все эти зависимости, такие как Dojo и PHP, находятся под управление системы контроля версий. Чтобы гарантировать работу с самыми последними версиями, нужно просто нажать кнопку Update Dependencies в инструментальной панели Eclipse или выбрать Zero > Update Dependencies в меню (см. рисунок 4).

Рисунок 4. Обновление зависимостей
Рисунок 4. Обновление зависимостей

Теперь давайте создадим интерфейсную часть приложения на JavaScript и HTML.

В каталоге public создайте новый файл под названием Example.html. Скопируйте код, приведенный в листинге 5, и сохраните файл:

Листинг 5. Небольшой интерфейс на javascript
<html>
<head>
<title>Dojo Zero Example</title>
<style type="text/css">
 @import "dijit/themes/noir/noir.css";
 @import "dojo/dojo.css"
</style>
<script type="text/javascript" src="dojo/dojo.js" 
        djConfig="parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dijit.form.Button");
dojo.require("dojo.parser");

function enterPressed() {
alert('The enter button was pressed');
}
</script>
</head>
<body>
<br/>
<br/>
Type your name then press enter: <input type='text' id ='name'/>
<br/>
<br/>
<br/>
<button dojoType='dijit.form.Button' onclick='enterPressed' >Enter</button>
</body>
</html>

В данный момент код, приведенный в листинге 5, вообще не взаимодействует с сервером; он просто отображает сообщение "The button was pressed" (Была нажата кнопка) при нажатии кнопки Enter. Код не использует традиционное действие onClick в кнопке, а использует систему событий Dojo для регистрации метода, вызываемого при загрузке страницы.

Тестирование Dojo

Имеет смысл попробовать запустить приложение, для того чтобы убедиться в корректности работы Dojo-части сценария:

  1. Щелкните правой кнопкой мыши на имени проекта и выберите Run as... > Project Zero Application.
  2. В браузере перейдите по адресу http://localhost:8080/Example.html.
  3. Example.html должен быть панелью ввода данных, содержащей кнопку и поле ввода (см. рисунок 5). Введите какой-нибудь текст в поле ввода и нажмите кнопку. Убедитесь в том, что появилось сообщение, содержащее текст "The enter button was pressed".
  4. Сейчас, возможно, вы захотите установить Firefox-расширение Google Firebug. Firefox позволяет проходить в пошаговом режиме более сложные JavaScript-файлы.
  5. Если панель ввода данных появилась, а сообщения при нажатии кнопки нет, возможно, не используется Dojo. Проверьте шрифт и форму кнопки Enter (см. рисунок 5). Dojo управляет стилем по шаблону (в нашем случае "noir"), как показано в заголовке страницы; обычный системный шрифт и форма кнопки указывает на то, что Dojo не работает. Повторно проверьте зависимость вашего проекта от Dojo, как это делали в предыдущем параграфе (см. рисунок 3).
Рисунок 5. Кнопка Dojo
Рисунок 5. Кнопка Dojo

Добавление PHP и завершение интерфейсной части

Давайте добавим некоторый код для передачи нажатия кнопки в Zero и предоставим небольшой PHP-сценарий для выбора и обработки этого события:

  1. В каталог public добавьте файл под названием ExampleResponse.php.
  2. Скопируйте код, приведенный в листинге 6, и сохраните файл:
Листинг 6. Интерфейс на PHP
<?php

$method = zget('/request/method');
echo " The request was a $method ";

$keys = zlist('/request/params', true);

echo "\n Here is the data: ";

for ($i=0;$i<count($keys);$i++) {
  echo  " Key: $keys[$i] value:";
  $value = zget($keys[$i]);
  if (is_array($value)) {
  	for ($j = 0; $j <count($value) ; $j++ ) {
  		echo " $value[$j] ";
  	}
  } else {
  	 echo " $value ";
  }
}
?>

Листинг 6 должен быть вам знаком, если вы работали с первым примером этого упражнения. Он просто получает сообщение и возвращает содержимое для отображения.

Вернитесь к Example.html и добавьте функцию enterPressed для связывания с ExampleResponse, созданным ранее:

Листинг 7. Функция enterPressed соответствует серверной части на PHP
function enterPressed()
{
    var deferred = dojo.xhrGet({
        url: "ExampleResponse.php",
        handleAs: "text",
        content: {name: dojo.byId('name').value},
        timeout: 5000, //Time in milliseconds
        handle: function(response, ioArgs){
            if(response instanceof Error){
                if(response.dojoType == "cancel"){
                     alert("Request cancelled.");
                }else if(response.dojoType == "timeout"){
                     alert("Request timed out.");
                }else{
                     alert(response);
                }
            }else{
               alert(response);
            }
        return response;
        }
});
}

Обработчик для отображения предупреждения встроен в определение функции enterPressed. Он замещает вызов dojo.io.bind, который использовался в предыдущей версии данной статьи, в которой использовался Dojo 0.4.3.

Не забудьте сохранить всю свою работу.

Теперь вы должны суметь перейти в браузер, обновить страницу Example.html, ввести некоторый текст в поле name, нажать кнопку Enter и увидеть сообщение "request was a GET", возвращенное с сервера (как показано на рисунке 6):

Рисунок 6. Приложение
Рисунок 6. Приложение

Завершенное Zero Ajax-приложение

Поздравляем! Вы только что закончили создание Zero Ajax-приложения. Возможно, это не самое совершенное Web-приложение из написанных вами, но согласитесь, это на самом деле было легко.

Надеемся, что на стороне сервера все прошло хорошо, но что делать, если это не так? В качестве дополнительного упражнения давайте изменим PHP-сценарий для генерирования ошибки и ее отладки.

Отладка PHP-кода

Измените первую строку сценария так, чтобы она имела такой же ошибочный код, который приведен в листинге 8:

Листинг 8. Ошибочный код
$method = zget('request/method');

Перед определением контекста отсутствует символ обратной косой черты, поэтому ожидается ошибка. Сохраните изменения, в браузере обновите страницу Example.html и посмотрите, что случится при нажатии Enter на этот раз. Надеемся, что отобразится полезное всплывающее окно, указывающее точную строку, в которой произошла ошибка. Это сообщение будет выглядеть аналогично показанному на рисунке 7, которое я получил при похожей ошибке неправильного написания ключа "method" (см. рисунок 7).

Рисунок 7. Сообщение об ошибке
Рисунок 7. Сообщение об ошибке

Примечание. Из исходного кода обработчика интерфейсной части можно увидеть, что сообщение об ошибке не было помечено типом type='error'. Этот тип используется для ошибок, возникающих при соединении с сервером. Эта ошибка была просто ответом сервера, который содержит подробности об ошибке в сценарии.

Еще одним полезным советом является напоминание о том, что механизм P8 тоже регистрирует ошибки. Вы можете установить флажок log_errors в файле php.ini в значение On и флажок error_log в желаемое имя файла. Тогда эта же ошибка будет записываться в этот файл. Вы увидите, что происходит при получении реальной ошибки в синтаксисе PHP, что мы сейчас и попробуем сделать.

Измените файл php.ini в каталоге config, а именно, измените mathod обратно на method и добавьте содержимое листинга 9 в файл ExampleResponse.php, куда-нибудь в PHP-код:

Листинг 9. Ошибочная строка PHP-кода
this is not a line of php

При повторном запуске страницы вы должны увидеть сообщение об ошибке, а также получить аналогичное сообщение в log-файле (по умолчанию log-файл располагается в корневом каталоге проекта; можно также щелкнуть правой кнопкой мыши на названии проекта и выбрать Refresh для его просмотра).

Не забудьте удалить неправильную строку в PHP-коде перед продолжением работы!

Отслеживание событий мыши

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

Для того чтобы Dojo распознал тело нашей страницы как элемент управления и смог отследить движения мыши, необходимо назначить телу имя. Нужно также добавить новый виджет для возвращаемых результатов. Раздел body вашей страницы должен выглядеть примерно так, как показано в листинге 10.

Листинг 10. Новый виджет
<body id="body">
<br/>
<br/>
Type your name then press enter: <input type='text' id ='name'/>
<br/>
<br/>
<br/>
<button dojoType='dijit.form.Button' onclick='enterPressed' >Enter</button>
<br/>
Mouse Position: <input type='text' id='pos'/>
<br/>
</body>

Теперь добавьте в метод init() код для связывания обработчика движений мыши с событием и сохраните все ваши изменения. Ваш метод init() должен выглядеть примерно так, как показано в листинге 11.

Листинг 11. Связывание движений мыши в разделе body
function init()
{
   var domElement = document.getElementById('body');
    
    dojo.connect(domElement, 'onmousemove',	
		function (evt)
		{
    		var deferred = dojo.xhrGet({
        	url: "MouseResponse.php",
        	handleAs: "text",
       		content: {x:evt.pageX , y:evt.pageY},
        	timeout: 5000, //Time in milliseconds
        	handle: function(response, ioArgs){
            if(!(response instanceof Error)){
        		dojo.byId('pos').value = response;
       		}
        	return response;
        }
		});
	}
    );}
    
dojo.addOnLoad(init);

Наконец, добавьте PHP-сценарий обработки движения мыши в каталог public и назовите его MouseResponse.php, как в исходном коде, приведенном в листинге 11. Скопируйте содержимое листинга 12 в PHP-файл.

Листинг 12. Серверная часть PHP для движений мыши
<?php
$keys = zlist('/request/params',false);
for ($i=0;$i<count($keys);$i++) {
  echo  "$keys[$i]=";
  $value = zget('/request/params/'.$keys[$i]);
  echo "$value";	
}
?>

Теперь вы сможете запустить страницу и увидеть информацию об обновлении позиции мыши, как показано на рисунке 8.

Рисунок 8. Приложение
Рисунок 8. Приложение

Закройте эту страницу до остановки сервера; в противном случае отобразится сообщение об ошибке при движении мыши!

Резюме и дальнейшие действия - что выполнено

В данном упражнении вы:

  • Установили Eclipse Development Environment для PHP.
  • Установили интегрированную среду Project Zero для PHP-разработки в Web 2.0.
  • Разработали приложение с простой HTML-формой и серверной частью на PHP.
  • Экспортировали приложение и запустили его из командной строки Zero.
  • Разработали второе PHP-приложение, объединяющее JavaScript с HTML для интерфейсной части.
  • Создали несколько ошибок и отладили их.
  • Расширили Ajax-приложение дополнительной функцией обратного вызова и новым Dojo-виджетом.

Что дальше

Теперь, создав простое Ajax Zero-приложение, вы можете расширить использование библиотеки Dojo и PHP на стороне сервера. Почему бы не совместить эти инструментальные средства с компонентом Data Zero и не создать реальную систему извлечения данных, использующую Apache Derby? Пример Employee Demo PHP, предоставляемый с проектом Project Zero является хорошей отправной точкой. По ссылке Project Zero Documentation в разделе "Ресурсы" размещены демонстрационные материалы Project Zero.

Если вы хотите больше узнать о Zero Global Context и других смежных темах, таких как Resource (REST) Handling, обратитесь к "Руководству разработчика Project Zero", ссылка на которое приведена в разделе "Ресурсы".

Мы надеемся, что это упражнение помогло вам начать работу с Project Zero. Посетите сайт projectzero.org (EN), если хотите подключиться к этому разрастающемуся сообществу. Чаще обращайтесь на сайт developerWorks для получения свежих обновлений библиотеки Project Zero.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Web-архитектура
ArticleID=344049
ArticleTitle=Приступаем к работе с Project Zero, WebSphere sMash и PHP
publish-date=10082008