PHP

Полное руководство для начинающих по Phalcon

Руководство по PHP фреймворку Phalcon

В этом руководстве по Phalcon, мы познакомим вас с фреймворком и опишем пошаговые инструкции для создания вашего первого проекта. По завершению этого руководства для начинающих по Phalcon у вас будет рабочая форма регистрации, сохраняющая информацию в базу данных MySQL.

Вступление

Исходя их архитектуры Модель-Представление-Контроллер (model-view-controller MVC), Phalcon – это высокопроизводительный PHP фреймворк. Его первые версии появились в 2012 году и всегда были представлены в виде открытого кода. Большая часть его была написана на языках программирования C и Zephir. Phalcon также известен тем, что он первым реализовал объектно-реляционное отображение (object-relational mapping – ORM) на C.

Мотивацией, стоящей за разработкой Phalcon было создание расширение веб-сервера, которое повысит скорость выполнения, снизит расходы ресурсов и будет гарантировать более высокий уровень обработки запросов в сравнении с другими PHP фреймворками. Наибольшее преимущество Phalcon, в сравнении с конкурентами, эффективное использование памяти. Это позволяет хранить информацию в памяти, в то время как большинство других фреймворков PHP используют чтение файлов и статистику файлов, а это операции, требующими больших затрат. Исключая необходимость в них, Phalcon оптимизирует производительность и повышает эффективность.

Phalcon высоко настраиваемый благодаря наличию Zephir высокоуровневого языка программирования. Он может быть использован для разработки приложений на PHP без знания языка C. В то время как другие фреймворки могут потребовать от вас наличия тысяч файлов ядра для различных функций. Давайте начнём наше руководство по Phalcon со сравнения его с другими PHP фреймворками.

 

Phalcon vs. Laravel

Хотя Laravel широко обсуждаемый, как главный выбор среди PHP фреймворков, он не сравнится с Phalcon, когда идёт речь о скорости, масштабируемости и производительности. Однако, Laravel сравнительно легче изучить и у него лучшая поддержка отладки. В то время как, чтобы сделать отладку кода в Phalcon, вам потребуется знания языка C. Другое отличие Laravel, это то, что он может быть установлен на любой сервер, в то время как установка Phalcon потребует права доступа администратора (root) на сервере.

Phalcon vs. CodeIgniter

Когда ещё не было никаких других PHP фреймворков, был CodeIgniter. Хотя этот проект существует уже продолжительное время, вот уже несколько лет как его разработка замедлилась. И Phalcon, и CodeIgniter имеют похожий набор функций, подробную документацию и широкую поддержку сообщества разработчиков. Но Phalcon значительно быстрее. Однако, CodeIgniter может догнать Phalcon при соответствующей оптимизацией аппаратных средств.

Phalcon vs. Symfony

Как Symfony, так и Phalcon проекты с открытым кодом, с поддержкой многоязычности и объектно-реляционным отображением. Они расширяют архитектуру MVC, имеют свои интерфейсы командной строки CLI и подробную документацию. Если вы планируете создание REST API приложений, то оба фреймворка будут хорошим выбором. Но ещё раз, когда идёт речь об оценке производительности, Phalcon берёт первенство. В целом, Phalcon может обрабатывать на 50 процентов запросов в секунду больше, в сравнении с Symfony. Хотя, процесс отладки может показаться несколько сложнее в Phalcon, так как придётся пройти через знание C. Отладка в Symfony относительно проще.

Настройка PHP фреймворка Phalcon

С Phalcon всё, что потребуется для установки – это расширение PHP, которое занимает немного места. Хотя, вам потребуется доступ root для этого. К счастью, он уже установлен на нашем общем хостинге, поэтому начальная настройка будет не сложной. Мы также рассмотрим установку Phalcon на VPS работающих под управлением ОС Ubuntu 16.04. Чтобы сделать это проще, мы будет использовать инструмент разработки Phalcon в обоих случаях. 

Без суеты давайте погрузимся в материал!

Вариант 1 – Настройка Phalcon на общем хостинге от Hostinger

Прежде всего, начнём с установки Phalcon devtools (инструменты разработчика). Для этой задачи мы будет использовать Composer, который также уже установлен в наших тарифных планах общего хостинга. Для начала подключитесь к своему хостинг-аккаунту по SSH. Используйте команду pwd для проверки вашего текущего расположения. Мы рекомендует выйти в каталог на один уровень выше public_html. Это сделает процесс более организованным. Если команда показывает следующие результаты, вы в правильном месте:

-bash-4.1$ pwd
/home/YOUR_USERNAME

Теперь давайте создадим файл composer.json со следующим контентом внутри:

{
 "require-dev": {
 "phalcon/devtools": "~3.2"
 }
}

Сделать это вы можете в Файловом Менеджере или выполнением такой команды по SSH:

nano composer.json

Это создаст ваш файл и откроет текстовый редактор. Вставьте необходимый контент нажмите CTRL+X для сохранения. Для установки инструментов разработчика, выполните такую команду:

composer install

Подождите завершения процесса, это может занять несколько минут. Дальше, давайте создадим алиас и инструменты разработчика (dev tools) будут полнофункциональными. Если вы следовали в точности шагам руководства, вы сможете создать его, используя такой синтаксис:

alias phalcon=/home/YOUR_USERNAME/vendor/phalcon/devtools/phalcon.php

Не забудьте заменить YOUR_USERNAME на ваше имя пользователя.

Теперь у нас есть работающие инструменты разработчика Phalcon. Проверить действительно ли они работают можно такой командой:

phalcon

И вы получите ответ подобный этому:

Phalcon DevTools (3.2.12)
 
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 слабо связанный, что значит вы можете иметь любую структуру каталогов, которая вам покажется удобной. Но с целью упрощения, мы будем использовать структуру, которую предлагают инструменты для разработки Phalcon. Давайте перейдём в каталог public_html, используя эту команду:

cd public_html

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

phalcon create-project example

Теперь, если вы перейдёте по ссылке YourDomain.com/example в своём браузере, вы увидите похожий экран:

phalcon framework hostinger виртуальный хостинг

 

Вариант 2 – Настройка Phalcon на VPS

Теперь давайте изучим, как настроить PHP фреймфорк Phalcon на виртуальном хостинге серверов. Это потребует немного больше времени, так как потребуется установить больше компонентов. Но мы пройдём всё поэтапно и потому процесс не создаст сложности. Для этой части мы будем использовать VPS с ОС Ubuntu 16.04.

Для начала нам потребуются такие компоненты:

  • Apache
  • MySQL
  • PHP 5.5+
  • Composer

Apache, MySQL и PHP включены по умолчанию как шаблоны VPS. Таким образом нужно только установить Composer для продолжения. И затем настроить расширение Phalcon PHP. Выполните такую команду для этого:

curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash

Теперь, когда у нас есть все необходимые компоненты, давайте настроим сам фреймворк. Начнём с инструментов разработчика Phalcon, которые упрощают использование фреймворка. Начнём с перехода на один каталог выше от каталога домена. В нашем примере это будет так:

cd /var/www

Используйте команду для создания файла composer.json:

nano composer.json

Это создаст файл и откроет его в интерфейсе текстового редактора. Вставьте этот контент в файл:

{
 "require-dev": {
 "phalcon/devtools": "~3.2"
 }
}

Нажмите CTRL+X, чтобы сохранить. Продолжите установку инструментов разработчика такой командой:

composer install

По завершению создайте алиас, чтобы убедится, что инструменты разработчика Phalcon рабочие. В нашем примере, синтаксис должен выглядеть так:

alias phalcon=/var/www/vendor/phalcon/devtools/phalcon.php

Давайте посмотрим работает ли он:

phalcon

Вывод должен быть таким:

Phalcon DevTools (3.2.12)
 
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)

Теперь мы готовы для создания проекта. Этот фреймфорк слабо связанный, что позволяет иметь любую структуру каталогов. В нашем примере мы будет использовать структуру каталогов по умолчанию, предоставляемую инструментами разработчика. Начнем с перехода в корневой каталог вашего домена. В нашем примере это:

cd /var/www/hostinger-tutorials.com/public_html

Дальше примените эту команду для создания структуры каталогов:

phalcon create-project example

Теперь вы можете открыть  свой домен в браузере (т.е. YourDomain.com/example) и вы должны будете увидеть подобную страницу:

phalcon framework hostinger vps

Создание вашего первого проекта в фреймворке Phalcon PHP

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

Растолкование структуры каталогов Phalcon

Как уже упоминалось в этом руководстве, Phalcon – фреймворк, обладающий слабой связанностью. Это значит, что вы можете создавать любою структуру каталогов. Однако, для этой демонстрации, мы будем использовать структуру по умолчанию, которую создают инструменты для разработчика фреймворка. Давайте посмотрим, как это работает!

Главный каталог приложения известен как корневой или root каталог. Любой каталог, который находится вне root-каталога недоступен веб-серверу и не попадает в область видимости проекта Phalcon. В нашем случае корневой, это каталог example.

Как только проект был создан, следующие каталоги будут видны в файловой системе:

  • App: Каталог состоит из наиболее важных компонент всего приложения. Все каталоги скриптов и файлов содержаться здесь. Если подробнее, то он состоит из:
    • Config: Как понятно из названия, все необходимые конфигурации или настройки будут сохраняться в этом каталоге. Хотите добавить новую стороннюю библиотеку или установить соединение с базой данных, вы сможете достичь этого написав соответствующий код в определённом файле внутри этого каталога.
    • Controllers: Контроллеры обрабатывают запросы и формируют ответы. Любой контроллер, который вы хотите определить будет частью этого каталога.
    • Library: Все библиотеки от сторонних разработчиков, которые вы хотите включить в проект будут храниться здесь.
    • Migrations: Если вы хотите сделать миграцию данных, тогда вам нужно добавить или отредактировать данные в этом каталоге.
    • Models: Каталог состоит из всего, что касается ваших данных. Что включает взаимодействие с базой данных для получение и предоставления данных.
    • Views: Представления в архитектуре MVC отвечают за отображение данных пользователю. Вся информация, связанная с представлением, как, например, страница с контентом, хранится здесь.
  •  Cache: Кэширование играет жизненно важную роль в формировании показателей производительности и всё, что с ним связано находится в этом каталоге.
  • PublicСодержит каталоги CSS, JavaScript, metadata, images (изображения), которые будут загружены, файлы, которые должны быть загружены и временный данные, относящиеся к приложению.

Вот инфографика (на англ.) для лучшего запоминания структуры фреймворка Phalcon:

phalcon-framework-directory-structure-infographic

Настраивание соединения с базой данных MySQL

Прежде всего, нужно создать базу данных MySQL, где будут храниться данные о пользователях. Вы можете это сделать через раздел Базы данных MySQL в панели управления.

Создание базы данных mysql для фреймворка phalcon

Как только закончили создание базы, нужно создать таблицы. Зайдите в созданную базу данных через phpMyAdmin и перейдите в раздел SQL.

Создание таблицы БД Phalcon

Потом выполните этот запрос:

CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(70) NOT NULL,
`email` varchar(70) NOT NULL,
 
PRIMARY KEY (`id`) 
);

Это создаст нужную структуру таблицы пользователей users.

Таблицы базы данных Phalcon

Далее давайте передём в /public_html/example/app/config/config.php и настроим подключение к базе данных. Вам нужно будет отредактировать следующие поля:

'database' => [
 'host' => 'mysql.hostinger.com',
 'username' => 'MySQL_User',
 'password' => 'Password',
 'dbname' => 'MySQL_Database',

Как только заполнили информацию MySQL, можно переходить к следующему шагу.

Добавление новой Модели

Теперь нам нужно создать модель. Сделать доступ к таблице users, которую мы создали на предыдущем шаге. Самый простой путь, использовать инструменты разработчика Phalcon dev tools. Используя терминал, перейдите в корневой каталог. В нашем примере это:

cd public_html/example

Вот команда, которая создаст нужную модель:

phalcon model users

Появится новый файл public_html/example/app/model/Users.php.

Добавление нового Контроллера

В этой демонстрации у нас будут страницы домашняя home и для регистрации signup. Домашняя страница контроллера уже создана, значит нам нужно только добавить новую страницу для регистрации. Это тоже мы сможем сделать с помощью инструментов разработчика. Используйте команду для создания контроллера:

phalcon controller Signup

Он появится в public_html/example/app/controllers/SignupController.php. Давайте откроем файл и добавим несколько строк, чтобы он мог взаимодействовать с базой данных. Финальная версия нашего файла будет выглядеть так:

<?php
 
class SignupController extends \Phalcon\Mvc\Controller
{
 
 public function indexAction()
 {
 
 }
 
 public function registerAction()
 {
 $user = new Users();
 
 // Store and check for errors
 $success = $user->save(
 $this->request->getPost(),
 [
 "name",
 "email",
 ]
 );
 
 if ($success) {
 echo "Thanks you for signing up!";
 } else {
 echo "Oops, seems like the following issues were encountered: ";
 
 $messages = $user->getMessages();
 
 foreach ($messages as $message) {
 echo $message->getMessage(), "<br/>";
 }
 }
 
 $this->view->disable();
 }
}

Создание контента страницы

Текст и контент ваших страниц доступны в public_html/example/app/views. Каждая страница имеет свой собственный каталог. Вы увидите, что каталог index уже создан. Поэтому нам нужно будет только создать каталог signup с пустым файлом index.phtml. Формат .phtml позволяет использовать и HTML, и PHP код.

Прежде всего, давайте отредактируем существующий файл public_html/example/app/views/index/index.phtml. Вот таким образом:

<div class="page-header">
 <h1>Welcome to Project Phalcon</h1>
</div>
<p>Want to be the first to get the latest updates?</p>
 
<?php
 
echo $this->tag->linkTo(
 "signup",
 "Sign Up Here!"
);

Код PHP присутствующий в файле будет перенаправлять пользователей на страницу регистрации signup.

Далее отредактируем public_html/example/app/views/signup/signup.phtml. Мы хотим, чтобы пользователи регистрировались на этой странице. Вот код, который нужно добавить:

<h2>Sign up using this form</h2>
 
<?php echo $this->tag->form("signup/register"); ?>
 
 <p>
 <label for="name">Name</label>
 <?php echo $this->tag->textField("name"); ?>
 </p>
 
 <p>
 <label for="email">E-Mail</label>
 <?php echo $this->tag->textField("email"); ?>
 </p>
 
 <p>
 <?php echo $this->tag->submitButton("Register"); ?>
 </p>
 
</form>

Готово! Теперь вы можете проверить своё творение на PHP фреймворке Phalcon.

Тестирование приложения на Phalcon

На данный момент приложение Phalcon находится в каталоге public_html/example. Это значит, что оно будет открываться в вашем браузере по адресу YourDomain.com/example. Чтобы сделать его загрузку сразу по YourDomain.com, вам нужно переместить все файлы в public_html, используя Файловый Менеджер.

Перемещение phalcon в public html

Теперь зайдите на свой домен через браузер и вы увидите такую страницу:

phalcon фреймворк пример домашней страницы

Если вы нажмёте на кнопку Sign Up Here (Зарегистрироваться здесь), это переадресует вас на страницу регистрации:

phalcon фреймворк пример страницы регистрации

Когда пользователь заполнит необходимые детали и отправит их, он получит подтверждающую его действия страницу:

phalcon фреймворк регистрация успешна

В случае, если он ввёл некорректные данные, фреймворк проинформирует о том, что не так (например, не заполнено имя):

phalcon фреймворк ошибка регистрации 1

Он даже проверит корректный ли формат e-mail адреса. В случае пропуска нужных символов или других ошибок в формате e-mail вы увидите предупреждение:

phalcon фреймворк ошибка регистрации 2

В завершение, все правильные записи вы сможете увидеть в таблице users вашей базы данных:

phalcon новая запись в базе данных

Поздравляем! Завершив это руководство по Phalcon, вы воздали базовую форму для регистрации.

В заключение

Phalcon относительно новый PHP фреймворк. И хотя он не так популярен, как Laravel или другие фреймворки, у него большой потенциал и скорость развития. Он требует некоторых усилий для настройки. Если вы создаёте сайт, Phalcon стоит попробовать. Возможно он станет вашим любимым фреймворком! Если вы хотите изучить больше, обратитесь к официальной документации.

Если у вас есть идеи, советы или подсказки, которыми вы бы хотели поделиться с нами, пишите их в комментариях ниже!

Добавить комментарий

Нажмите здесь, чтобы оставить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Присоединяйтесь к тысячам других подписчиков по всему миру

и получайте самые свежие руководства на вашу электронную почту

Пожалуйста, подождите...

Спасибо за подписку!

Начните экономить сейчас!

Хостинг и доменное имя от

руб.95
00
Share this