Эти инструменты представляют собой набор полезных скриптов для генерации основы приложения. Основные компоненты приложения могут быть созданы простыми командами, позволяющими легко разрабатывать приложения с использованием Phalcon.
If you prefer to use the web version instead of the console, this blog post offers more information.
Вы можете использовать инструменты для создания скелета проекта на 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 Name of the new project
--enable-webtools Determines if webtools should be enabled [optional]
--directory=s Base path on which project will be created [optional]
--type=s Type of the application to be generated (cli, micro, simple, modules)--template-path=s Specify a template path [optional]
--use-config-ini Use a ini file as configuration file [optional]
--trace Shows the trace of the framework in case of exception. [optional]
--help Shows this help
Созданный проект можно сразу запустить в браузере:
Создание контроллеров
The command create-controller generates controller skeleton structures. It’s important to invoke this command inside a directory that already has a Phalcon project.
В проектах, созданных с использованием инструментов разработчика A configuration file can be found in app/config/config.php. Для генерации моделей, вам потребуется изменить настройки, используемые для подключения к вашей базе данных.
Change the database section in your config.php file:
<?phpdefined('BASE_PATH')||define('BASE_PATH',getenv('BASE_PATH')?:realpath(dirname(__FILE__).'/../..'));defined('APP_PATH')||define('APP_PATH',BASE_PATH.'/app');returnnew\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/',// This allows the baseUri to be understand project paths that are not in the root directory// of the webpspace. This will break if the public/index.php entry point is moved or// possibly if the web server rewrite rules are changed. This can also be set to a static path.'baseUri'=>preg_replace('/public([\/\\])index.php$/','',$_SERVER["PHP_SELF"]),]]);
Создание моделей
Существует несколько способов генерации моделей. Вы можете создать все модели по таблицам текущей базы данных или для любой таблицы выборочно. Модели может содержать публичные атрибуты или работу через сеттеры и геттеры.
Options:
--name=s Table name
--schema=s Name of the schema. [optional]
--namespace=s Model's namespace [optional]
--get-set Attributes will be protected and have setters/getters. [optional]
--extends=s Model extends the class name supplied [optional]
--excludefields=l Excludes fields defined in a comma separated list [optional]
--doc Helps to improve code completion on IDEs [optional]
--directory=s Base path on which project will be created [optional]
--force Rewrite the model. [optional]
--trace Shows the trace of the framework in case of exception. [optional]
--mapcolumn Get some code for map columns. [optional]
--abstract Abstract Model [optional]
Самый простой способ для создания модели:
$ phalcon model products
$ phalcon model --name tablename
Созданная модель содержит публичные атрибуты для прямого доступа.
При использовании --get-set атрибуты модели будут закрыты для прямого изменения, работа с ними будет только через соответствующие сеттеры и геттеры. Такое поведение позволит изменить бизнес-логику работы модели внутри соответствующих методов.
<?phpusePhalcon\Mvc\Model;classProductsextendsModel{/**
* @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
*/publicfunctionsetId($id){$this->id=$id;}/**
* Метод установки значения для поля typesId
*
* @param integer $typesId
*/publicfunctionsetTypesId($typesId){$this->typesId=$typesId;}// .../**
* Возвращает значение статуса поля
*
* @return string
*/publicfunctiongetStatus(){return$this->status;}}
Приятной особенностью генератора моделей является то, что он сохраняет изменения, сделанные разработчиком. Это позволяет добавлять или удалять поля и свойства, не беспокоясь о потере изменений, внесенных в модель вручную. Следующий демо-ролик показывает как это работает:
Автоматическая генерация CRUD
Скаффолдинг (scaffolding; в переводе с англ. “строительные леса”) — метод метапрограммирования для создания веб-приложений, взаимодействующих с БД. Это достаточны быстрый способ для получения основных элементов приложения. Если вы хотите быстро создать модели, представления, и контроллеры для нового ресурса приложения — использование автоматической генерации кода является отличным инструментом для этих задач.
После того, как код сгенерирован, его можно настроить под себя. Многие разработчики не используют scaffolding, предпочитая писать весь код самостоятельно. Сгенерированный код может служить в качестве руководства, чтобы лучше понять основы работы или разработки прототипов. Пример ниже показывает генерацию интерфейса для таблицы products:
$ phalcon scaffold --table-name products
The scaffold generator will build several files in your application, along with some folders. Here’s a quick overview of what will be generated:
Файл
Предназначение
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 поля и выдавать требования о их заполнении.
After performing a search, a pager component is available to show paged results. Use the “Edit” or “Delete” links in front of each result to perform such actions.
Веб интерфейс инструментов
Also, if you prefer, it’s possible to use Phalcon Developer Tools from a web interface. Check out the following screencast to figure out how it works:
Интеграция в PhpStorm IDE
Скринкаст показывает, как интегрировать инструменты для разработчиков с PhpStorm IDE. Аналогично можно интегрировать дополнения в любой другой PHP редактор или IDE.
Заключение
Инструменты разработчика Phalcon предоставляют простой способ генерации кода для ваших приложений, тем самым сокращая время разработки и количества потенциальных ошибок в коде.