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»:
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
Подписать гостевую книгу:
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', ), );