Еще Тортик, Часть 3.0.0

Наконец-то вышел CakePHP 3.0.0. Наша компания использует в своей разработке cakephp в качестве основного фреймворка для бэкенд-разработки.

За четыре года мы досконально поняли его преимущества и недостатки.

И, конечно, многие проблемы, которые исчезнут с переходом на 3.0, нами уже решены, но развитие используемого инструмента не может не радовать.

Мы ожидаем, что после этого обновления cakephp вернет себе заслуженную популярность.



Еще тортик, часть 3.0.0

Что нового в CakePHP 3.0.0:

  • новый ОРМ
  • более быстрая и гибкая маршрутизация
  • улучшенная миграция
  • улучшенная локализация
  • улучшенная панель инструментов отладки
  • наличие менеджера зависимостей
  • автономные библиотеки
  • Просмотр ячеек
С версией 3.0 я уже наигрался, так что давайте немного посмотрим на возможности этого фреймворка.

Меню навигации репетитора: Миграция CakePHP 3 – Быстрый старт Просмотр ячеек в CakePHP 3.0 – Быстрый старт События в CakePHP 3 – инструкция в 4 шага Формы начальной загрузки Twitter в CakePHP 3 Изменение разметки нумерации страниц в CakePHP 3 Темы в CakePHP 3 – Пошаговые инструкции

Миграция CakePHP 3 – Быстрый старт

В CakePHP 3 миграции представляют собой отдельный плагин и оболочку для библиотек Phinx. Сначала немного истории.

Каждая команда, над которой я работал, использовала ту или иную систему контроля версий для управления своим кодом, фаворитом была Git. Однако когда дело дошло до изменений в синхронизации структуры базы данных, многие были озадачены.

Использование миграций казалось каким-то чудом! :) Шаг 1 – Установка плагина миграции Установите CakePHP, а затем отредактируйте файл композитора.

json, добавив следующее:

  
  
  
  
  
   

"require": { "cakephp/migrations": "dev-master" }

Запустите обновление диспетчера зависимостей, а затем загрузите плагин в свое приложение, отредактировав файл bootstrap.php и добавив следующую строку:

Plugin::load('Migrations');

Вот и все! Теперь вы готовы создать свою первую миграцию.

Шаг 2 – Создайте первую миграцию В командной строке введите Миграции .

/bin/cake создают CreatePostsTable и ты увидишь используя путь миграции /home/tariquesani/WWW/migration/config/Migrations создано .

/config/Migrations/20141015052852_create_posts_table.php Как видите, для вас создан скелет миграции.

Откройте его в своем любимом редакторе кода, где он будет выглядеть так

<Эphp use Phinx\Migration\AbstractMigration; class CreatePostsTable extends AbstractMigration { /** * Change Method. * * More information on this method is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * * Uncomment this method if you would like to use it. * public function change() { } */ /** * Migrate Up. */ public function up() { } /** * Migrate Down. */ public function down() { } }

Давайте напишем что-нибудь в функции up() для создания таблицы Posts. «функция вверх» нужна для всего, что вы хотите добавить или изменить при разработке проекта, а «функция вниз()» нужна для того, чтобы отменить или откатить эти изменения.

Вы также можете использовать новую функцию Phinx Change(), которая является обратимой, однако сейчас мы будем работать только с «вверх» и «вниз».

Отредактируйте эти две функции, чтобы они выглядели так

/** * Migrate Up. */ public function up() { $posts = $this->table('posts'); $posts->create(); } /** * Migrate Down. */ public function down() { $this->dropTable('posts'); }

Шаг 3. Запустите созданную миграцию.

Чтобы начать миграцию, введите Миграции .

/bin/cake переносятся Ты увидишь Добро пожаловать в консоль CakePHP v3.0.0-beta2 - Приложение: источник Путь: /home/tariquesani/WWW/migration/src/ — используя путь миграции /home/tariquesani/WWW/migration/config/Migrations использование среды по умолчанию использование адаптера MySQL использование базы данных caketest == 20141015052852 CreatePostsTable: миграция == 20141015052852 CreatePostsTable: миграция 0,2205 с.

Если вы посмотрите в базе данных, то обязательно найдете таблицу Posts с автоинкрементным полем ID. Мы могли бы добавить необходимые столбцы в нашу первую миграцию, однако, поскольку мы этого не сделали, давайте изменим эту таблицу, создав еще одну миграцию.

Шаг 3. Создайте еще одну таблицу миграции.

Выполнять Миграции .

/bin/cake создают AlterPostsTable Отредактируйте функцию Change новой миграции с помощью следующего кода.

Обратите внимание, что мы ничего не записываем в down().



public function change() { $posts = $this->table('posts'); $posts->addColumn('title', 'string') ->addColumn('body', 'text') ->addColumn('created', 'datetime') ->addColumn('modified', 'datetime') ->save(); }

Повторно запустите миграцию, используя команду выше.

Посмотрите на структуру таблицы «Сообщения» в базе данных и вы увидите, что там появились соответствующие поля.

Шаг 4 – Попытка отката Раз уж мы использовали функцию Изменить, попробуем отменить это изменение.

Откат миграции .

/bin/cake Это приведет к удалению всех полей, добавленных в таблицу миграции AlterPostsTable. Вы можете откатить одну миграцию за раз.

Если вы сейчас запустите Статус миграции .

/bin/cake тогда ты увидишь Статус Идентификатор миграции Имя миграции - вверх 20141015052852 CreatePostsTable вниз 20141015060152 AlterPostsTable Также в базе данных вы можете подтвердить, что эти столбцы были удалены.

Другая миграция просто вернет столбцы обратно.

Предупреждение! Не делайте откат, если в таблице есть важные данные, так как они будут удалены.

Но ты уже знал это, не так ли? Вы также можете запускать SQL-запросы непосредственно в файлах миграции (как это сделать, см.

документацию Phinx).

Также ходят разговоры о том, что будет реализована возможность изначального импорта структуры из существующей базы данных, что будет очень хорошо для запуска проектов с использованием Migrations. Поскольку миграции представляют собой текстовые файлы, их можно сохранить в формате VCS и синхронизировать со всеми разработчиками.



Просмотр ячеек в CakePHP 3.0 – Быстрый старт

Концепция View Cells в CakePHP 3 находится в разработке уже довольно давно.

Книжное определение View Cells: мини-контроллеры, которые позволяют просматривать логику классов и отображать шаблоны.

В 2007 году о них написал Нди Доусон.

Если бы мне пришлось рассказать вам, где используются View Cells, я бы сказал: «Подумайте о виджетах» — если вы работаете с WordPress, вы понимаете, о чем я.

У CakePHP всегда была возможность выполнить requestAction(), но это нагружало процессор.

Со временем мы пробовали использовать разные варианты, включая создание экземпляра контроллера, создание хелперов, но использовать их всегда было сложно.

View Cells имеет два неоспоримых преимущества: небольшой размер и модульность.

Давайте попробуем использовать View Cell в новом приложении.

Я предполагаю, что вы можете установить CakePHP 3 и создать приложение для публикации.

Таблица базы данных должна иметь поле «Название» в дополнение к обязательному столбцу «Идентификатор»; Остальные поля вы задаете на свое усмотрение.

Теперь я покажу вам, как создать виджет «Последние публикации» с помощью ячеек просмотра.

Шаг 1 После того, как вы создали и протестировали приложение публикации, снова откройте терминал и создайте ячейку просмотра, используя следующую команду выпечка торта в ячейке Сообщения Эта команда создаст файлы src/View/Cell/PostsCell.php и src/Template/Cell/Posts/display.ctp, а также файл для написания тестов.

Файл PostsCell.php — это класс, эквивалентный мини-контроллеру, а файл display.ctp — это файл шаблона для отображения метода класса PostsCell. Подробнее об этом позже.

Шаг 2 Откройте файл PostsCell.php в вашем любимом редакторе.

Это будет выглядеть примерно так

<Эphp namespace App\View\Cell; use Cake\View\Cell; /** * Posts cell */ class PostsCell extends Cell { /** * List of valid options that can be passed into this * cell's constructor. * * @var array */

Теги: #CakePHP 3 #php #программирование #CakePHP #php #программирование #CakePHP

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.