02 Использование
Инструменты разработчика Phalcon
Эти инструменты представляют собой набор полезных скриптов для генерации основы приложения. Основные компоненты приложения могут быть созданы простыми командами, позволяющими легко разрабатывать приложения с использованием Phalcon.
Скачать
Вы можете скачать кроссплатформенный пакет инструментов разработчиков используя публичный репозиторий на GitHub.
Установка
Существуют подробные инструкции о том, как установить средства разработки на различные платформы:
Доступные команды
Для получения списка имеющихся команд введите: phalcon commands
$ phalcon commands Phalcon DevTools (3.4.0) Available commands: info (alias of: i) commands (alias of: list, enumerate) controller (alias of: create-controller) module (alias of: create-module) model (alias of: create-model) all-models (alias of: create-all-models) project (alias of: create-project) scaffold (alias of: create-scaffold) migration (alias of: create-migration) webtools (alias of: create-webtools) serve (alias of: server) console (alias of: shell, psysh)
Создание скелета проекта
Вы можете использовать инструменты для создания скелета проекта на Phalcon. По умолчанию созданный проект будет использовать mod_rewrite для Apache. Введите следующие команды в корне сайта вашего веб-сервера:
$ pwd /Applications/MAMP/htdocs $ phalcon create-project store
Проект создастся с полной рекомендованной структурой:
Для получения подробной информации по командам стоит использовать параметр --help
:
$ phalcon project --help Phalcon DevTools (3.0.0) Help: Creates a project Usage: project [name] [type] [directory] [enable-webtools] Arguments: help Shows this help text Example phalcon project store simple Options: --name Название нового проекта --enable-webtools Определяет, нужно ли включать webtools [необязательно] --directory=s Базовый путь, по которому будет создан проект [необязательно] --type=s Тип создаваемого приложения (cli, micro, simple, modules) --template-path=s Укажите путь к шаблону [необязательно] --use-config-ini Использовать ini-файл в качестве файла конфигурации [необязательно] --trace Показывает трассировку платформы в случае исключения. [Факультативный] --help Показывает эту справку
Созданный проект можно сразу запустить в браузере:
Создание контроллеров
Команда create-controller
генерирует структуры скелета контроллера. Важно вызвать эту команду в каталоге, который уже имеет проект Phalcon.
$ phalcon create-controller --name test
Команда выше сформирует следующий код:
<?php use Phalcon\Mvc\Controller; class TestController extends Controller { public function indexAction() { } }
Настройка базы данных
В проектах, созданных с использованием инструментов разработчика A configuration file can be found in app/config/config.php
. Для генерации моделей, вам потребуется изменить настройки, используемые для подключения к вашей базе данных.
Измените раздел базы данных в файле config.php:
<?php defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: realpath(dirname(__FILE__) . '/../..')); defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app'); return new \Phalcon\Config([ 'database' => [ 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'root', 'password' => 'secret', 'dbname' => 'test', 'charset' => 'utf8', ], 'application' => [ 'appDir' => APP_PATH . '/', 'controllersDir' => APP_PATH . '/controllers/', 'modelsDir' => APP_PATH . '/models/', 'migrationsDir' => APP_PATH . '/migrations/', 'viewsDir' => APP_PATH . '/views/', 'pluginsDir' => APP_PATH . '/plugins/', 'libraryDir' => APP_PATH . '/library/', 'cacheDir' => BASE_PATH . '/cache/', // Это позволяет baseUri понимать пути проекта, которые не находятся в корневом каталоге веб-пространства. // Это сломается, если точка входа public/index.php будет перемещена или, возможно, // при изменении правил перезаписи веб-сервера. Это также можно установить на статический путь. 'baseUri' => preg_replace('/public([\/\\\\])index.php$/', '', $_SERVER["PHP_SELF"]), ] ]);
Создание моделей
Существует несколько способов генерации моделей. Вы можете создать все модели по таблицам текущей базы данных или для любой таблицы выборочно. Модели может содержать публичные атрибуты или работу через сеттеры и геттеры.
Options: --name=s Имя таблицы --schema=s Имя схемы. [необязательно] --namespace=s Пространство имен модели [необязательно] --get-set Атрибуты будут защищены и иметь сеттеры/геттеры. [необязательно] --extends=s Модель расширяет предоставленное имя класса [необязательно] --excludefields=l Исключает поля, определенные в списке через запятую [необязательно] --doc Помогает улучшить автозавершение кода в IDE [необязательно] --directory=s Базовый путь, по которому будет создан проект [необязательно] --force Переписать модель. [необязательно] --trace Показывает трассировку платформы в случае исключения. [необязательно] --mapcolumn Получите код для карты столбцов . [необязательно] --abstract абстрактная модель [необязательно]
Самый простой способ для создания модели:
$ phalcon model products
$ phalcon model --name tablename
Созданная модель содержит публичные атрибуты для прямого доступа.
<?php use Phalcon\Mvc\Model; class Products extends Model { /** * @var integer */ public $id; /** * @var integer */ public $typesId; /** * @var string */ public $name; /** * @var string */ public $price; /** * @var integer */ public $quantity; /** * @var string */ public $status; }
При использовании --get-set
атрибуты модели будут закрыты для прямого изменения, работа с ними будет только через соответствующие сеттеры и геттеры. Такое поведение позволит изменить бизнес-логику работы модели внутри соответствующих методов.
<?php use Phalcon\Mvc\Model; class Products extends Model { /** * @var integer */ protected $id; /** * @var integer */ protected $typesId; /** * @var string */ protected $name; /** * @var string */ protected $price; /** * @var integer */ protected $quantity; /** * @var string */ protected $status; /** * Метод установки значения для поля id * * @param integer $id */ public function setId($id) { $this->id = $id; } /** * Метод установки значения для поля typesId * * @param integer $typesId */ public function setTypesId($typesId) { $this->typesId = $typesId; } // ... /** * Возвращает значение статуса поля * * @return string */ public function getStatus() { return $this->status; } }
Приятной особенностью генератора моделей является то, что он сохраняет изменения, сделанные разработчиком. Это позволяет добавлять или удалять поля и свойства, не беспокоясь о потере изменений, внесенных в модель вручную. Следующий демо-ролик показывает как это работает:
Автоматическая генерация CRUD
Скаффолдинг (scaffolding; в переводе с англ. "строительные леса") — метод метапрограммирования для создания веб-приложений, взаимодействующих с БД. Это достаточны быстрый способ для получения основных элементов приложения. Если вы хотите быстро создать модели, представления, и контроллеры для нового ресурса приложения — использование автоматической генерации кода является отличным инструментом для этих задач.
После того, как код сгенерирован, его можно настроить под себя. Многие разработчики не используют scaffolding, предпочитая писать весь код самостоятельно. Сгенерированный код может служить в качестве руководства, чтобы лучше понять основы работы или разработки прототипов. Пример ниже показывает генерацию интерфейса для таблицы products
:
$ phalcon scaffold --table-name products
Генератор эшафотов будет создавать несколько файлов в вашем приложении вместе с некоторыми папками. Вот краткий обзор того, что будет создано:
Файл | Предназначение |
---|---|
app/controllers/ProductsController.php |
Контроллер продуктов |
app/models/Products.php |
Модель продуктов |
app/views/layout/products.phtml |
Макет для контроллера продуктов |
app/views/products/new.phtml |
Представление для действия new |
app/views/products/edit.phtml |
Представление для действия edit |
app/views/products/search.phtml |
Представление для действия search |
На главной странице созданного таким образом контроллер вы увидите форму поиска, и ссылку на создание нового продукта:
Страница создания продукта позволяет добавить в таблицу products
новую запись, при этом будут использованы проверки по правилам модели Products. Phalcon будет автоматически проверять not null поля и выдавать требования о их заполнении.
После выполнения поиска доступен компонент пейджера для отображения выведенных результатов. Используйте ссылки «Изменить» или «Удалить» перед каждым результатом для выполнения таких действий.
После выполнения поиска пейджер компонент для отображения результатов. Используйте ссылки" изменить "или" удалить " перед каждым результатом для выполнения таких действий.
Веб интерфейс инструментов
Кроме того, если вы предпочитаете, можно использовать инструменты разработчика Phalcon из веб-интерфейса. Проверьте следующий скринкаст, чтобы выяснить, как это работает:
Интеграция в PhpStorm IDE
Скринкаст показывает, как интегрировать инструменты для разработчиков с PhpStorm IDE. Аналогично можно интегрировать дополнения в любой другой PHP редактор или IDE.
Заключение
Инструменты разработчика Phalcon предоставляют простой способ генерации кода для ваших приложений, тем самым сокращая время разработки и количества потенциальных ошибок в коде.