Статьи

Использование NuoDB из PHP Zend Framework

Zend Framework — это объектно-ориентированный PHP-фреймворк, который можно использовать для создания интерактивных веб-приложений. NuoDB поддерживает Zend Framework версии 1 и 2. В этой статье TechBlog я покажу вам, как использовать NuoDB с Zend Framework v1 и v2. Я буду использовать примеры приложений, представленных в документации Zend Framework, и покажу, как заставить их работать с NuoDB.

В этом посте я использую чистую установку 64-битного рабочего стола Ubuntu 12.04. http://www.ubuntu.com/download/desktop   (примечание: приведенные ниже команды и пути могут отличаться в других дистрибутивах Linux).

Установите Apache2 & PHP

Сначала нам нужно установить Apache2, PHP и включить модуль перезаписи Apache2. Вы можете сделать это с помощью следующих команд:

$ sudo apt-get install apache2
$ sudo apt-get install libapache2-mod-php5
$ sudo a2enmod rewrite

Установите и настройте NuoDB

Загрузите NuoDB:  http://www.nuodb.com/download

Установите NuoDB и запустите быстрый запуск:  http://www.nuodb.com/nuodb-online-documentation/tasks/t_InstallConfigLix_inst.html

Информация о PHP

Перед установкой драйвера PDO NuoDB PHP нам необходимо получить некоторую информацию об установленном дистрибутиве PHP. Вот что я вижу на своей машине:

$ php -i | grep "PHP Version"
PHP Version => 5.3.10-1ubuntu3.6
PHP Version => 5.3.10-1ubuntu3.6
$ php -i | grep "Thread Safety"
Thread Safety => disabled
$ php -i | grep "Configuration File"
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini
$ php -i | grep "extension_dir"
extension_dir => /usr/lib/php5/20090626 => /usr/lib/php5/20090626

Установите и настройте драйвер NuoDB PHP PDO

Чтобы использовать NuoDB из PHP, вам необходимо установить и настроить драйвер NuoDB PHP PDO. Исходный код доступен на GitHub, но вам, вероятно, не нужно создавать его самостоятельно, потому что ваша установка NuoDB уже содержит предварительно собранные драйверы для PHP 5.3 NTS и PHP 5.4 NTS.

Получив приведенную выше информацию о PHP, мы можем скопировать правильный драйвер PDO NuoDB в этот extension_dir с помощью следующей команды:

$ sudo cp /opt/nuodb/drivers/php_pdo/php-5.3.NTS/pdo_nuodb.so /usr/lib/php5/20090626

Далее нам нужно изменить конфигурацию PHP для динамической загрузки драйвера PDO NuoDB PHP. Это делается путем добавления «extension = pdo_nuodb.so» в ваши файлы инициализации PHP. В Ubuntu PHP настроен для сканирования определенных каталогов на наличие файлов PHP .ini. Версия PHP для командной строки сканирует каталог /etc/php/cli/conf.d. Когда PHP выполняется из Apache2, PHP настраивается для сканирования каталога /etc/php5/apache2/conf.d. Чтобы добавить NuoDB в эти конфигурации PHP, мы можем использовать этот оператор расширения в файле с именем nuodb.ini и скопировать этот файл в эти каталоги конфигурации:

$ echo "extension=pdo_nuodb.so" > /tmp/nuodb.ini
$ sudo cp /tmp/nuodb.ini /etc/php5/cli/conf.d/
$ sudo cp /tmp/nuodb.ini /etc/php5/apache2/conf.d/
$ sudo /etc/init.d/apache2 restart

Проверьте правильность загрузки драйвера NuoDB PHP PDO

Мы можем проверить правильность конфигурации и загрузку драйвера PDO NuoDB PHP, вызвав функцию phpinfo () из файла .php на веб-сайте Apache2 по умолчанию. Пример:

$ echo "<? phpinfo(); ?>" > /tmp/phpinfo.php
$ sudo cp /tmp/phpinfo.php /var/www/

Затем откройте веб-браузер по URL:

http://localhost/phpinfo.php

В разделе PDO должно отображаться «nuodb» в «драйверах PDO»:

phpinfo

NuoDB Zend Framework Репозиторий

У нас есть репозиторий на GitHub, который содержит файлы, необходимые для поддержки NuoDB с Zend Framework. Вы можете скачать его следующим образом:

$ cd ~/Downloads
$ wget -O nuodb-php-pdo-zend.tar.gz https://github.com/nuodb/nuodb-php-pdo-zend/tarball/master
$ cd ..
$ tar -xzf ~/Downloads/nuodb-php-pdo-zend.tar.gz
$ mv nuodb-nuodb-php-pdo-zend-* nuodb-php-pdo-zend

Zend Framework v1

Пример быстрого запуска Zend Framework v1 имеется на веб-сайте framework.zend.com. Он находится в документации Zend Framework 1. Быстрый старт — это приложение виртуальной гостевой книги, где посетители могут подписать гостевую книгу.

Вам следует начать с загрузки Zend Framework v1 с веб-сайта framework.zend.com и распаковать его:

$ cd ~/Downloads
$ wget https://packages.zendframework.com/releases/ZendFramework-1.12.3/ZendFramework-1.12.3.tar.gz
$ cd ..
$ tar -xzf ~/Downloads/ZendFramework-1.12.3.tar.gz

Хранилище NuoDB Zend Framework содержит файл Nuodb.php. Этот файл является адаптером данных NuoDB Zend Framework v1. Вы должны скопировать Nuodb.php в вашу библиотеку Zend Framework v1 / Zend / Db / Adapter / Pdo:

$ cp ~/nuodb-php-pdo-zend/Nuodb.php ~/ZendFramework-1.12.3/library/Zend/Db/Adapter/Pdo/

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

http://framework.zend.com/manual/1.12/en/learning.quickstart.html.

Или вы можете извлечь законченный пример из файла ~ / nuodb-php-pdo-zend / nuodb_zf1_quickstart.tar.gz.

Пример быстрого запуска на сайте framework.zend.com использует Sqlite. Легко использовать NuoDB вместо Sqlite. Когда придет время настроить db-адаптер, используйте следующую команду для настройки NuoDB:

$ zf.sh configure db-adapter 'adapter=PDO_NUODB&host=localhost&username=dba&password=goalie&dbname=test@localhost&schema=guestbook&options.autoQuoteIdentifers=false' production

На этом этапе запустите NuoDB Storage Manager / Transaction Engine в базе данных test @ localhost, а затем используйте следующую команду nuosql для создания схемы, таблицы и данных:

$ /opt/nuodb/bin/nuosql test@localhost --user dba --password goalie
SQL> DROP SCHEMA guestbook CASCADE IF EXISTS;
SQL> CREATE SCHEMA guestbook;
SQL> USE guestbook;
SQL> CREATE TABLE guestbook (
 "id" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
 "email" VARCHAR(32) NOT NULL DEFAULT '[email protected]',
 "comment" TEXT NULL,
 "created" DATETIME NOT NULL
 );
SQL> INSERT INTO guestbook ("email", "comment", "created") VALUES
 ('[email protected]',
 'Hello! Hope you enjoy this sample zf application!',
 NOW());
SQL> INSERT INTO guestbook ("email", "comment", "created") VALUES
 ('[email protected]',
 'Baz baz baz, baz baz Baz baz baz - baz baz baz.',
 NOW());

Это все, что нужно.

Запуск быстрого запуска Zend Framework v1

Откройте веб-браузер по  адресу: http: // zf1quickstart / guestbook

ZF1_quickstart_1

Подписать гостевую книгу:

ZF1_quickstart_2

Zend Framework v2

На веб-сайте framework.zend.com есть пример учебного пособия по Zend Framework v2. Он находится в документации Zend Framework v2. Учебник представляет собой приложение для инвентаризации музыкальных альбомов.

Вам следует начать с загрузки Zend Framework v2 с веб-сайта framework.zend.com и распаковать его:

$ cd ~/Downloads
$ wget https://packages.zendframework.com/releases/ZendFramework-2.2.1/ZendFramework-2.2.1.tgz
$ cd ..
$ tar -xzf ~/Downloads/ZendFramework-2.2.1.tgz

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

http://framework.zend.com/manual/2.2/en/user-guide/skeleton-application.html. 

Или вы можете извлечь законченный пример из файла ~ / nuodb-php-pdo-zend / nuodb_zf2_tutorial.tar.gz.

В разделе «База данных и модули» вместо использования MySQL создайте следующую схему, таблицу и данные в NuoDB:

$ /opt/nuodb/bin/nuosql test@localhost --user dba --password goalie
SQL> DROP SCHEMA zf2tutorial CASCADE IF EXISTS;
SQL> CREATE SCHEMA zf2tutorial;
SQL> USE zf2tutorial;
SQL> CREATE TABLE "album" (
 "id" int NOT NULL generated by default as identity,
 "artist" varchar(100) NOT NULL,
 "title" varchar(100) NOT NULL,
 PRIMARY KEY (id)
 );
SQL> INSERT INTO "album" ("artist", "title")
 VALUES  ('The  Military  Wives',  'In  My  Dreams');
SQL> INSERT INTO "album" ("artist", "title")
 VALUES  ('Adele',  '21');
SQL> INSERT INTO "album" ("artist", "title")
 VALUES  ('Bruce  Springsteen',  'Wrecking Ball (Deluxe)');
SQL> INSERT INTO "album" ("artist", "title")
 VALUES  ('Lana  Del  Rey',  'Born  To  Die');
SQL> INSERT INTO "album" ("artist", "title")
 VALUES  ('Gotye',  'Making  Mirrors');

Конфигурация базы данных

Измените config / autoload / global.php (в корне Zend Skeleton, а не в модуле Album) следующим кодом:

<?php
 return array(
    'db' => array(
    'driver'         => 'Pdo',
    'dsn'            => 'nuodb:database=test@localhost;schema=zf2tutorial',
    ),
    'service_manager' => array(
       'factories' => array(
           'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
 );

Вы должны поместить свои учетные данные базы данных в config / autoload / local.php, чтобы они не находились в репозитории git (так как local.php игнорируется):

<?php
  return array(
     'db' => array(
         'username' => 'dba',
         'password' => 'goalie',
      ),
   );

Запуск учебника Zend Framework v2

Откройте веб-браузер по адресуhttp: // zf2-tutorial / album

zf2_tutorial_1

Добавить новый альбом