CakePHP с нуля маленькое приложение


Содержание

Авторские статьи Начальный практикум в CakePHP

3.4 Кэширование.
К счастью разработчиков CP представляет несколько механизмов управления кэшированием. На мой
взгляд они очень удобны. С их помощью мы сейчас настроем кэширование страниц с описаниями
продуктов и отзывами о них. Стандартно, предлагается несколько вариантов хранения кэшированных
данных, но мы будем использовать файловый, он стоит по умолчанию. За все нужные нам операции
отвечает хэлпер «Cache» ( http :// book . cakephp . org / view /213/ Cache ). Подключив его, настроим
кэширование только результата действия view ( http :// book . cakephp . org / view /346/ Caching — in — the —
Controller). Для этого обозначим массив «cacheAction» как свойство контроллера и поместим туда
ячейку «view/» со значением «86400».

На этом настройка кэширования завершена. Попробуйте подобавлять отзывы и проверить изменился ли
внешний вид страницы.

3.5 Логирование
И последнее что будет рассмотренно в этой статье — логирование данных о работе приложения
(http://book.cakephp.org/ar/view/157/Logging). Подобный функционал может очень пригодиться для
отслеживания ошибок в крупных приложениях, когда сходу не сообразишь где и какой произошла сбой.
Никаких компонентов или хэлперов подключать здесь не нужно. Единственная функция, нужная для
логирования, доступна всегда. Это функция «log». Ей нужно передавать 2 параметра. Первый —
сообщения. Им может быть информация об ошибке, сбое, действии пользователя и т.п. А второй — тип
логируемой информации. В качестве этого параметра может быть передана одна из двух констант —
«LOG_ERROR» и «LOG_DEBUG» — ошибочная или отладочная информация соответственно.
Рассмотрим пример с ошибкой. В методе «view» контроллера «Product» может быть ошибочно указан
товар в ссылке. В связи с этим метод «getProductIdByTName» вернёт ложное значение. Давайте добавим
после вызова этого метода строку

и пройдём по ссылке http://cakephp/product/view/11111111, вызвав тем самым несуществующий товар.
Сообщение будет записано в файл «error.log». Он находится там же где и все логи — в директории
«./app/tmp/logs». Открыв его Вы обнаружите что самая последняя надпись содержит информацию типа
этой — «2009-03-16 20:07:33 Error: Request to non-existing product». А можно вообще выделить в
отдельную группу например только лог-записи связанные с товарами. Для этого в качестве константы
можно передать строку, скажем, «products». В таком случае автоматически создастся файл «products.log»
и в него будет записана вся передаваемая информация.
Вот и всё. Код нашего магазина готов и нормально функционирует. Если у Вас что-то не получилось то
можете взять исходный код всего приложения в прикреплённом архиве «ready.zip».

4.0 Заключение.
На мой взгляд фреймворк хороший, но очень сильно запутанный. Иногда использование некоторых
функций не укладывается в голове — по логике они должны использоваться, например, в контроллере, а
используются в модели. Что-то должно быть компонентом, а является хэлпером. Не понравились и
инструменты для работы с БД. Я больше предпочитаю интерфейсы подобные паттерну ActiveRecord. Ну
и худой функционал — мало хэлперов и компонентов. И всё-таки, как говориться, на вкус и цвет.
Надеюсь, что он понравится читателям. Удачи Вам в Ваших проектах!

CakePHP с нуля: маленькое приложение

Автор:Коллектив
Название: Кулинария PHP. 109 уроков. Интерактивный курс
Издательство: Россия
Год: 2014
Формат: exe
Размер: 441 МВ
Страниц: 1000
Язык: Русский

Обучающая программа «Кулинария РНР» представляет собой сборник из 109 уроков по РНР. Уроки снабжены, где необходимо, исходниками. Также программа содержит справочник РНР функций в СНМ формате.
Список уроков:

CakePHP: создаем сайт для закладок.

В статье рассказывается как с помощью фреймворка CakePHP создавать быстрые и легкие приложения, затрачивая при этом минимум времени и сил. На примере создания сайта для закладок, практически показаны методы и приемы работы с контроллерами, методами и представлениями CakePHP.

Если вы эксперт в CakePHP, вы знаете, как находить контроллеры, углубляться в модели и создавать представления, впечатляющие публику. Но, войдя во вкус быстрой разработки приложений с CakePHP, вы хотите сделать еще, причем больше за меньшее время. Что ж, имеете право: и мы посмотрим, как расширить функционал нашего приложения с помощью модулей CakePHP. Это следствие принципа DRY (Don’t repeat yourself — Не повторяй себя). Найдя решение проблемы однажды, разумным образом оформите его и поделитесь им со всем миром, чтобы каждый мог что-то вложить и что-то получить от этого решения. А для этого прихватите немного кода, уже написанного другими, и воспользуйтесь модулями расширения, чтобы сэкономить массу времени.

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

Как всегда, потратим немного времени на то, чтобы убедиться, что наша база данных соответствует соглашениям и стандартам CakePHP, чтобы каркас сделал за нас всю трудную работу. Желающим отклониться от предложенных стандартов и структур советую заглянуть на страничку http://book.cakephp.org/view/901/cakephp-conventions — там можно получить информацию о том, как уйти в свободное плавание собственным путем.
Немного поразмыслим над данными, которые нам нужно будет хранить. Нам понадобятся URL, пользователи, рейтинги, чтобы при размещении адресов закладок в Twitter, Facebook или любой другой социальной сети пользователи смогли оценить содержимое, если оно им нравится.
CREATE DATABASE `bookmark`;
USE `bookmark`;
CREATE TABLE `urls` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`user_id` CHAR(36) NOT NULL,
`name` VARCHAR(128) NOT NULL,
`url` TEXT,
`created` DATETIME,
`modified` DATETIME
);
CREATE TABLE `users` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`created` DATETIME,
`modified` DATETIME
);

Минуточку, но ведь это, конечно, не все таблицы, которые нам нужны? Список параметров, которые мы хотели хранить для каждой вкладки, был довольно длинным. И непохоже, что в этой таблице хватает полей на все данные — если не считать того момента, что каждый модуль расширения может хранить необходимую информацию из базы данных самостоятельно, чтобы гарантировать, что в пакете модуля содержится весь предоставляемый функционал, включая требования базы по хранению данных.
Ну и как это работает? Для этого необходимо воспользоваться либо оболочкой «Schema», поставляемой с CakePHP, либо модулем расширения «Migrations». Мы воспользуемся модулем миграции.
Bake — консольная команда, с помощью которой можно генерировать код, выполнять миграции, запускать тесты и многое другое. Для удобства работы с ней из консоли, путь cake/console внутри пакета CakePHP нужно включить в переменную окружения PATH. Сделать это можно так:
$export PATH=»$PATH:/path/to/cakephp/cake/console»
Единственное оставшееся требование — РНР должен быть доступен в командной строке. Во многих дистрибутивах есть пакет php-cli или подобный ему, в котором есть исполняемый файл РНР для командной строки.
Начнем новый проект и создадим базовую структуру, от которой и будем отталкиваться. Выполняем следующие команды:
$cake bake project bookmark
$cd bookmark
CakePHP создал базовую структуру приложения. Она содержит каталоги и ряд исходных файлов для обслуживания статических страниц. Покопайтесь в ней, присмотритесь, чем именно вас снабдили.
Прежде чем заняться выпеканием, нужно дать понять CakePHP, как подключится к нашей базе данных. Скопируйте файл /config/database.php.default в /config/datаbase.php. Введите туда настройки своей базы данных, имя пользователя и пароль для базы данных. Вот, примерно, что у вас должно получиться:
`mysql`,
`persistent` => false,
`host` => `localhost`,
`login` => `login`,
`password` => `password`,
`database` => `bookmark`,
`prefix` => «,
);
>
Заметьте, что настройки базы test из этого файла удалены. Тестовая конфигурация используется при модульном тестировании, а мы в рамках нашего проекта этим заниматься не будем.
Давайте приступим к созданию моделей, представлений и контроллеров для таблиц базы данных, которые мы создали ранее. С помощью команд создадим весь код, необходимый для работы приложения в целом, потом нам останется только его модифицировать.
$cake bake all user
$cake bake all url
Пусть вас не пугает объем вывода команды bake, чем больше данных она выводит, тем больше времени мы сэкономим на написании кода. Взглянув на вывод, вы увидите все пути и имена файлов, которые были созданы для нас. Теперь у нас есть пользователь и система управления ссылками, и вы можете заходить на сайт, чтобы добавлять или изменять какую-либо информацию. Попробуйте открыть ссылку /users. У меня каталог находится в корне веб-сервера и адрес будет таким: http://localhost/bookmark/users. Откроется страница со списком пользователей, где вы сможете найти ссылки для добавления пользователей и изменения информации о них.
Быстренько пробежимся по тому, как закрыть сайт от доступа посторонних, чтобы мы смогли создавать пользователей и входить в систему, но без входа в систему доступ ко всему был бы закрыт.
Откройте файл app_controller.php в корне проекта. Это пустой контроллер, от которого наследуют свой функционал все остальные контроллеры приложения. Все сделанное в нем будет доступно во всех остальных контроллерах, так что это прекрасное место для аутентификации, которая заставит пользователей входить на сайт и помешает незваным гостям изменять данные. Добавьте компоненты «Auth» и «Session». Теперь ваш контроллер AppController длжен выглядеть так:
set(‘authUser’,$this->Auth->user());
return parent::beforeFilter;
>
>
Как видите, мы изменили вызов set в функции beforeFilter. Это гарантирует нам доступ к информации о текущем пользователе во всех представлениях сайта. Если текущего пользователя нет, this установится в null.
Затем откройте /controllers/users_controller.php и добавьте действие login. Оно может быть пустым: о его содержании позаботиться CakePHP. Пока мы тут, давайте добавим еще и logout, чтобы дать возможность пользователям выходить из системы:
function login() <
>
function logout() <
return $this->redirect($this->Auth->logout());
>
Наконец, в контроллере нужно гарантировать, что для создания пользователя не придется входить в систему, иначе система заблокируется, так как в ней не пользователей. Добавляем следующий метод в контроллер users:
function beforeFilter() <
$this->Auth->allow(‘add’);
return parent::beforeFilter();
>
Последний фрагмент этой мозайки — файл представления view, который был создан утилитой bake. Он примет имя пользователя и пароль и позволит пользователям войти в систему. Создайте представление login в новом файле: /views/users/login.ctp:

Снова откройте список пользователей users, и вы незамедлительно будете перенаправлены на форму авторизации. Теперь попробуйте зайти на страницу добавления пользователя, и вы увидите, что ее можно просматривать без ввода логина и пароля.
Пора выпить чашку чаю/кофе, кому что нравиться — сайт работает, данные мы защитили. Пробегитесь по приложению и создайте нового пользователя. Зайдите на сайт под этим пользователем и проверьте, что все работает правильно, добавьте пару ссылок. Теперь, когда сайт вам знаком и вы довольны его работой, пора подключить несколько модулей и заставить работать некоторые примочки.
Давайте отыщем необходимые модули, загрузим их и настроим каталоги в /app/plugins. Для загрузки модулей воспользуемся Git. С помощью Git модули грузятся быстрее. Вдобавок, это прекрасная возможность научится работать с Git как со средством управления версиями:
git clone https://github.com/cakedc/migration.git plugins/migrations
git clone https://github.com/cakedc/ratings.git plugins/rating
git clone https://cakedc/search.git plugins/search
git clonr https://github.com/predominant/cake_social.git plugins/cake_social
git clonr https://github.com/predominant/goodies.git plugins/goodies
Только что мы сэкономили несколько месяцев на разработке. Я не шучу. Мы воспользовались набором модулей с открытым исходным кодом, которые доступны любому разработчику.
Ранее говорилось, что нам не хватает таблиц в базе данных, и мы позаботимся об этом с помощью миграции баз данных. Сейчас вы увидите, как просто создать таблицу базы данных для модулей и повторного использования кода в проектах. Не всем модулям нужна миграция, и не все модули ее предусматривают. У тех, у кого она есть, в каталоге config есть подкаталог migrations. Например, вы можете пройтись по модулям и посмотреть, кому из них нужна миграция, или просто запустить ее для всех: тогда для модулей, которым она не нужна, появится сообщение об ошибке — тут-то они нам и попадутся.
Выполните следующую команду, чтобы завершить настройку таблиц для добавленных модулей:
$cake migration -plugin ratings all
Теперь у вас есть все необходимые таблицы.
Для начала обеспечим возможность выставления рейтинга. Рейтинг должен быть только у URL-адресов. Добавить компонент очень просто: открываем UrlsController в файле /controllers/urls_controller.php и добавьте компонент Ratings:
class UrlsController extends AppController <
var $components=array(‘Ratings.Ratings’);
//.. existing code
>
Свежедобавленный компонент сам подключается вспомогательный класс, необходимый для отображения формы с рейтингом, а также обрабатывает сохранение и загрузку информации о рейтингах. Поэтому все, что нужно — это задать представление для отображения формы с рейтингами с помощью вспомогательного класса рейтингов.
Страница просмотра адреса смотрится довольно пресно. Нужно как минимум добавить немного графики и элементов управления, чтобы посетители быстрее воспринимали информацию. Оставим сложности CSS и стилизации веб-мастерам, но немного упростим им задачу, показав иконки пользователя из информации о пользователя для каждого адреса. Для этого будем использовать вспомогательный класс gravatar плагина Goodies.
Откройте представление для адресов. Мы заменим строку:
Html->link($url[‘User’][‘id’], array(‘controller’ => ‘users’, ‘action’ => ‘view’,$url[‘User’][‘id’]));?>
на похожую, но включающую в себя вывод аватара с помощью вспомогательного класса:
Html->link(
$this->Gravatar->image($url[‘User’][’email’]),
array(‘controller’ => ‘users’, ‘action’ => ‘view’,
$url[‘User’][‘id’]),
array(‘escape’ => false));?>

Наконец, подключите вспомогательный класс в контроллере AppController в файле /app_controller.php:
class AppController extends Controller <
var $helpers=array(‘Html’,’Form’,’Sessions’,’Goodies.Gravatar’);
//.. existing code
>
Теперь будет отображаться граватар пользователя, полученный по его e-mail, указанному во время регистрации, а вместо уродливого UUID будет показано имя пользователя.
Давайте еще немного украсим дополнительную информацию, добавив возможность поделиться ссылкой в социальных сетях, чтобы привлечь больше посетителей на сайт. Этот функционал предоставляет модуль CakeSocial. В модуле есть вспомогательный класс «ShareThis», который очень сильно упрощает обмен контентом в социальных сетях. Добавляем вспомогательный класс в контроллер AppController в файле /app_controller.php:
class AppController extends Controller <
var $helpers=array(‘Html’,’Form’,’Sessions’,’Goodies.Gravatar’,’CakeSocial.ShareThis’);
//,,existing code
>
С разу перед закрывающим тегом в представлении для адресов /view/urls/view.php вставьте следующий код:
>
>
ShareThis->display();?>

В этом представлении пять строк, но только одна выводит ссылки на социальные сети. Остальное — метка и стили для обертки вывода. Обновите страницу и увидите, что ссылки на социальные сети ShareThis появились, и можно поделиться ссылкой в списке сервисов по умолчанию.
Приложение, которое у нас получилось, показывает, как быстро можно создавать код с CakePHP, и иллюстрирует качество свободных модулей. У приложение есть большой потенциал для расширения — предоставление дополнительной информации, например, частых URL-адресов, интеграция в сервис REST, Ajax-скриплет для работы с закладками, который можно встроить в браузер. Возможности CakePHP по истине безграничны!

Установка фреймворка CakePHP 3

Содержание

C akePHP 3 прост и легок в установке. Все, что вам нужно, это веб-сервер и копия фреймворка (скелет будущего сайта). В статье я расскажу, как выполнить установку CakePHP на Apache. Кроме Apache, CakePHP будет прекрасно работать и на других веб-серверах, таких как Nginx, LightHTTPD или Microsoft IIS.

Требования:

— HTTP Сервер, например Apache. Желательно с включенным модулем mod_rewrite

— PHP 5.5.9 или выше (в том числе PHP 7)

— PHP расширение mbstring (в XAMPP mbstring расширение работает по умолчанию)

— PHP расширение intl (В XAMPP, intl расширение включено, но необходимо его раскомментировать extension=php_intl.dll в php.ini и перезапустить сервер через панель управления XAMPP)

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

  • MySQL (5.1.10 или выше);
  • PostgreSQL;
  • Microsoft SQL Server (2008 или выше);
  • SQLite 3.

Внимание! При использовании той или иной системы хранения данных, убедитесь, что в настройках PHP (файл php.ini) подключено соответствующее расширение (например для MySQL это extension=php_pdo_mysql.dll).

Установка CakePHP

Первым делом запускаем локальный сервер XAMPP (одним из компонентов которого является Apache), как это сделать читаем тут: установка и настройка локального сервера XAMPP. Далее вы должны убедиться, что ваша PHP версия соответствует требованиям. Для этого откройте командную строку и выполните следующую операцию:

Если у вас установлена одна из последних версий XAMPP, то проблем не должно возникнуть.

Установка Composer (менеджера зависимостей для языка PHP)

Установка CakePHP через Composer, это официально поддерживаемый метод установки фреймворка. Менеджер можно установить на сайте https://getcomposer.org. Там же вы найдете всю необходимую документацию по процессу установки, правда только на английском языке.

Самый простой способ установки Composer, это скачать и выполнить установочный файл Composer-Setup.exe. В результате чего произойдет установка последней версии менеджера на ваш компьютер. Так же, установщик выполнит настройку системной переменной PATH, что позволит просто вызывать Composer через командную строку из любой директории вашей системы.

Создание проекта CakePHP

Далее, если вы все сделали правильно и Composer запускается глобально, то зайдите в папку, где вы предполагаете хранить свои будущие проекты (например C:\htdocs) и откройте там командную строку. После чего выполните следующую команду:

composer self-update && composer create-project —prefer-dist cakephp/app mysite.loc

После того, как Composer завершит загрузку скелета приложения и ядра библиотеки CakePHP в папку mysite.loc (C:\htdocs\mysite.loc), вы получите полностью функционирующее приложение CakePHP. Файлы composer.json и composer.lock обязательно оставьте с остальной частью исходного кода в папке. Схема папок приложения CakePHP выглядит следующим образом:

Хотя Composer, это рекомендуемый метод установки, но он не всегда загружает самую актуальную версию приложения. Если это произошло (у меня пару раз точно случалось), то расстраиваться не стоит, так как в официальном репозитории CakePHP на сайте Github вы всегда можете найти предустановленные загрузки разных версий. Эти загрузки содержат скелет приложения со всем необходимым.

Теперь вы можете посетить путь (через адресную строку браузера), куда было установлено приложение CakePHP (для нашего случая это http://mysite.loc) и увидеть домашнюю страницу по умолчанию. Чтобы изменить содержимое этой страницы, нужно просто отредактировать файл C:\htdocs\mysite.loc\SRC\Template\Pages\home.ctp

Дополнительную информацию вы можете посмотреть в документации фреймворка CakePHP 3 на официальном сайте.

На сегодня это все, если что-то не получается, пишите в комментариях или в ВК, чем смогу – помогу.

Установка¶

CakePHP устанавливается легко и быстро. Минимальные требования, это веб сервер и копия Cake, это все! В основном в этом руководстве описывается настройка Apache (поскольку он самый распространенный), однако вы можете настроить Cake для других веб серверов, таких как: Nginx, LightHTTPD, Microsoft IIS и др.

Требования¶

  • HTTP сервер. Например: Apache. Желательно, но не обязательно с mod_rewrite.
  • PHP 5.2.6 и выше.

Технически, база данных не требуется, но предположим, что большинство приложений ее используют. CakePHP поддерживает различные СУБД:

  • MySQL (4 и выше)
  • PostgreSQL
  • Microsoft SQL Server
  • SQLite

Для всех встроенных драйверов требуется PDO. Убедитесь, что PDO установлен корректно.

Цукерберг рекомендует:  Кросбраузерность - Кросбраузерность, need your help

Лицензия¶

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

Скачать CakePHP¶

Существует два основных способа получить свежую копию CakePHP. Вы можете скачать архив (zip/tar.gz/tar.bz2) с сайта, или извлечь код из git-репозитория.

Чтобы скачать последний релиз CakePHP, посетите официальный сайт http://www.cakephp.org и нажмите ссылку “Download”.

Все текущие релизы CakePHP размещены на Github, так же, как и многие плагины для CakePHP. Релизы CakePHP доступны в Github downloads.

К тому же вы можете получить самую последнюю версию кода с помощью клонирования репозитория на Github

Права доступа¶

CakePHP использует папку app/tmp для ряда различных операций. Например, описания моделей, кеширования представлений, сессий и т.д, потому убедитесь, что каталог app/tmp и все его подкаталоги доступны для записи пользователем, от которого работает веб сервер. В *nix для этого достаточно зайти в директорию app и выполнить комманду chmod -R 0777 tmp/ .

Установка¶

Установка CakePHP так же проста, как и размещение его в document root веб сервера, или же может быть сложна и гибка, в зависимости от ваших потребностей. В этом разделе рассмотрены три основные типы установки CakePHP: для разработки, production и расширенная.

  • Для разработки: проста для старта, урлы приложения включают папку установки CakePHP, менее безопасна
  • Production: требует возможности настройки document root веб сервера, чистые урлы, очень безопасна.
  • Расширенная установка: с некоторыми изменениями позволяет разместить папки CakePHP в другом месте файловой системы сервера, позволяет использовать ядро CakePHP многими приложениями.

Установка для разработки¶

Данная установка — самый быстрый способ настроить Cake. Этот пример поможет установить CakePHP приложение и сделать его доступным по адресу http://www.example.com/cake_2_0/. В этом случае мы предполагаем, что document root сервера находится в /var/www/html .

Распакуйте архив с Cake в /var/www/html . Вы получите папку с названием версии, например cake_2.0.2. Переименуйте папку в cake_2_0. В итоге вы получите следующую конфигурацию директорий:


  • /cake_2_0
    • /app
    • /lib
    • /vendors
    • /plugins
    • /.htaccess
    • /index.php
    • /README

Если веб сервер настроен правильно, то Cake будет доступен по ссылке http://www.example.com/cake_2_0/.

Production установка¶

Этот вид установки более гибкий, весь домен будет работать как одно приложение CakePHP. Данный премер поможет установить Cake в любую директорию файловой системы, а доступ к приложению будет по адресу http://www.example.com. Обратите внимание, что при такой установке могут потребоваться права для смены DocumentRoot веб сервера Apache. В целях данного примера предположим, что вы устанавливаете Cake в /cake_install. Вы получите следующую конфигурацию директорий:

  • /cake_install/
    • /app
      • /webroot ( DocumentRoot настроен на этот каталог)
    • /lib
    • /vendors
    • /.htaccess
    • /index.php
    • /README

Разработчики использующие Apache должны установить DocumentRoot для домена:

Добавление кэширования

Повышение производительности приложений

Серия контента:

Этот контент является частью # из серии # статей: Быстрое создание Web-сайтов с помощью CakePHP, Часть 5

Этот контент является частью серии: Быстрое создание Web-сайтов с помощью CakePHP, Часть 5

Следите за выходом новых статей этой серии.

Данная серия руководств предназначена для тех разработчиков приложений на PHP, кто хочет начать использовать CakePHP, чтобы облегчить себе жизнь. Прочитав до конца, вы научитесь устанавливать и настраивать конфигурацию CakePHP, изучите основы проектирования Модель-Представление-Контроллер (MVC), узнаете, как проводить валидацию пользовательских данных в CakePHP, как применять помощников CakePHP, и как, используя CakePHP, можно быстро написать и запустить приложение. Может показаться, что нужно изучить очень много, но не переживайте — большую часть CakePHP сделает за вас.

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

Предполагается, что вы знаете язык программирования PHP, обладаете фундаментальным пониманием проектирования баз данных, и не боитесь замарать рук.

Системные требования

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

  1. Сервер HTTP с поддержкой сессий (и желательно mod_rewrite ). Данное руководство было написано при использовании Apache V1.3 с mod_rewrite .
  2. PHP версии 4.3.2 или выше (включая PHP версии 5). Данное руководство создавалось на основе PHP версии 5.0.4
  3. Поддерживаемое ядро базы данных (на сегодняшний день — MySQL, PostgreSQL или используя надстройку над ADODB). Руководство было написано при использовании MySQL V4.1.15.

Также необходима база данных и пользователь базы данных, готовые к использованию приложением. В руководстве представлены синтаксические структуры для создания всех необходимых таблиц в MySQL.

Самый простой способ получить CakePHP — это зайти на сайт CakeForge.org и загрузить самую последнюю стабильную версию. Данное руководство создавалось на основе версии 1.1.8. (Полные сборки и копии Subversion также доступны для загрузки. Подробное описание приведено в Справочнике по CakePHP — см. Ресурсы).

Итак, Tor

В конце четвертой части, вам было задано усовершенствовать Tor. Справились?

Добавление представления и функции Favorites

Для просмотра списка Favorites (Избранное), необходимо добавить функцию favorites в контроллер users, как показано в листинге 1.

Листинг 1. Добавление функции favorites в контроллер users

Не забудьте про переадресацию пользователя, если он не вошел в систему. Это позволит избежать появления ошибки, если пользователь просматривает страницу, не войдя в систему.

Также необходимо добавить файл favorites.html в директорию app/views/users/, который может выглядеть так, как показано в листинге 2.

Листинг 2. Favorites.html

Фактически, все, что делает представление, это показывает таблицу products. Однако сейчас таблица products отображается вместе с ссылкой Add To Favorites (добавить в Избранное). Это неправильно, так как просматривается именно список товаров в favorites (Избранном). Должна быть ссылка Remove From Favorites (удалить из Избранного).

Добавление ссылки Remove From Favorites (удалить из Избранного)

Итак, ваше задание заключалось в добавлении ссылки Remove From Favorites (удалить из Избранного) в таблицу products, настроив ее таким образом, чтобы пользователь видел ссылку Remove (удалить), если товар присутствует в его списке favorites (Избранное), и ссылку Add (добавить), если данного товара нет в списке favorites (Избранное) пользователя. Давайте посмотрим на таблицу products еще раз, так как это очень важно.

Листинг 3. Таблица рroducts

Ссылка Remove From Favorites (удалить из Избранного) аналогична тому, что показано в листинге 4.

Листинг 4. Ссылка Remove from Favorites (удалить из Избранного)

Также в контроллере products должна быть функция removeFromFavorites .

Листинг 5. Функция removeFromFavorites

Аналогично, необходимо создать метод removeFavorite в контроллере users.

Листинг 6. Создание метода removeFavorite

Наверно, вы обратили внимание, что при просмотре списка favorites, отображается ссылка Add to Favorites (добавить в Избранное). Вместо нее пользователь должен видеть кнопку Remove from Favorites (удалить из Избранного) для тех товаров, которые были добавлены и находятся в списке favorites. Как это сделать?

Кэширование

По своей сути, кэширование иногда может быть очень сложным. Существуют различные типы кэширования, и у каждого есть свои преимущества и недостатки. Крайне важно понимать, что имеется в виду под словом «кэширование» в данном случае.

Понятие кэширования

Как правило, кэширование происходит при каждом запросе, когда отвечающее приложение говорит «Мне не нужно никуда идти за информацией. Она уже есть у меня». Чаще всего, если пользователь компьютера слышит слово «кэш», то он думает о кэше браузера. Обычно, для того чтобы ускорить работу пользователя, браузер сохраняет копии просмотренных статических файлов — рисунки, таблицы стилей, статические HTML-файлы и файлы сценариев. Хотя данный тип кэширования иногда доставляет неприятности разработчикам Web-приложений, в данном руководстве он рассматриваться не будет.

Еще один пример кэширования — запрос браузером контента у приложения. Если Web-приложение применяет кэширование, то оно может ответить на запрос предварительно созданной копией контента, что снижает излишние затраты ресурсов на вторичное создание контента. Данный тип кэширования и будет описан в данном приложении.

Зачем кэшировать?

Как правило, в приложении кэширование используется по двум причинам. Первая — оно помогает снизить потребление ресурсов на сервере. Хотя в большинстве случаев эта экономия минимальна, но для часто просматриваемых сайтов, обслуживающих большое количество запросов, эти небольшие экономии в сумме сводятся к значительному увеличению производительности. Вторая причина — скорость. Так как приложению не приходится проходить через процесс повторного создания контента для запроса, то контент может быть предоставлен гораздо быстрее. Опять же, в большинстве случаев, экономия минимальна, но использование кэширования позволяет часто просматриваемым сайтам получать прирост в скорости.

Как кэшировать?

Итак, вас уговорили. Теперь вы готовы к тому, чтобы кэшировать все и всегда. Как это сделать? Как CakePHP может упростить данную задачу?

Для начала, необходимо включить кэширование. По умолчанию оно отключено. Включить его можно в app/config/core.php — найдите запись: define(‘CACHE_CHECK’, false); и измените ее на define(‘CACHE_CHECK’, true); .

Задавая значение true (истина), вы, тем самым, указываете CakePHP, что кэширование включено. Давайте пойдем дальше, так как настроить кэширование можно позднее. Мы еще не закончили: необходимо указать CakePHP, что конкретно необходимо кэшировать и на какой промежуток времени.

Что кэшировать?

Включив кэширование, необходимо указать, что нужно кэшировать. Это можно реализовать в контроллере для представлений, которые необходимо кэшировать, добавив кэширование в массив helpers . Например, если необходимо кэшировать представления products, то в массиве helpers контроллера products должно присутствовать кэширование. Когда вы создавали контроллер products в Tor, то указали, что используются helpers (помощниики) форм и HTML. При добавлении кэширования в этот список массив helpers будет выглядеть следующим образом: var $helpers = array(‘Html’, ‘Form’, ‘Cache’ ); .

Теперь, когда используется помощник кэширования, необходимо указать, что конкретно следует кэшировать. Это можно выполнить различными способами, однако все они зависят от массива $cacheAction .

Кэширование конкретного запроса

Предположим, что необходимо кэшировать конкретный запрос. Представим, что есть три или четыре товара, которые часто просматриваются, и вы хотите кэшировать только представления «просмотра» («view») данных товаров. В этом случае, необходимо описать запросы, которые вы хотите кэшировать, в качестве ключей массива для $cacheAction и указать временной срок в качестве значений ключа. Массив $cacheAction является переменной класса так же, как и массив $helpers . Для кэширования этих конкретных представлений, $cacheAction должен выглядеть так, как показано в листинге 7.


Листинг 7. $cacheAction

Данный $cacheAction указывает CakePHP, что необходимо кэшировать представления «просмотра» для товаров 1-3 в течение 3,600 секунд (один час). Указанный временной срок может задаваться в любом формате, который интерпретируется strtotime() . Можно просто задать 1 hour (1 час).

Кэширование целой функции

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

Можно даже смешать и согласовать.

Листинг 8. Смешивание и согласование

Данный прием позволяет экономить время. Теперь вы кэшировали представления «просмотра» наиболее часто просматриваемых товаров и все представления редактирования, но может появиться желание сделать больше.

Кэширование всех функций контроллера

Возможно, необходимо кэшировать все, что делает контроллер. В этом случае, нет никакой необходимости описывать каждую функцию в массиве $cacheAction . Можно просто в качестве значения $cacheAction задать промежуток времени хранения кэшированной информации: var $cacheAction = «+1 hour»; .

Значением должна быть строка, которую может интерпретировать strtotime() . Если задать $cacheAction только одно значение, то это укажет CakePHP, что нужно кэшировать все представления контроллера.

Кэширование из функции

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

Как правило, в этом нет никакой необходимости, но может возникнуть ситуация, когда понадобится и такое кэширование. Если вы столкнетесь с такой ситуацией, то теперь знаете, как это можно сделать. В CakePHP есть различные способы кэширования представлений. Это легко. Более сложной задачей, является определение когда нужно, а точнее, когда не нужно кэшировать.

Когда использовать кэширование?

Возможно, у вас появилось ощущение, что кэширование — это самое замечательное изобретение человечества. Более того, очень часто так и есть. Однако возникает вопрос, в каком случае не следует кэшировать представления?

Чаще всего, не следует кэшировать данные, которые постоянно изменяются. Например, предположим, что пользователи Tor добавляют товары несколько раз в минут. В этом случае, кэширование представления index может стать помехой. Если контент изменяется так часто, что кэшированная страница никогда не используется, то получается, что вы просто увеличили затраты ресурсов на хранение кэшированной страницы и проверку при каждом запросе, не была ли она изменена.

Однако это вовсе не означает, что кэширование не нужно использовать вообще. Просто необходимо уточнить CakePHP что следует кэшировать.

Использование разметки в представлении

В представлении или макете, CakePHP позволяет исключить некоторый контент из кэширования, если заключить его в теги . Корректное использование этой разметки позволит CakePHP кэшировать статические части представления или макета, и гарантировать, что динамические составляющие страницы считываются при каждом запросе.

Не всю информацию можно заключать в теги . А именно, нельзя просто заключить переменные в теги для того, чтобы сделать их динамическими. В сущности говоря, в теги можно заключать конструкции CakePHP, например, помощников и вызовы элементов.

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

Листинг 9. Макет, используемый по умолчанию

Если кэширование включено, то при первой загрузке любой страницы, которая использует макет по умолчанию, Welcome read(‘user’) ?> будет заменено на Welcome или Welcome wrestler — то есть, неважно какой пользователь вошел в систему, он увидит кэшированное имя пользователя.

Чтобы указать, что не следует кэшировать имя пользователя, необходимо заключить строку read(‘user’) ?> в теги . Окончательный результат будет выглядеть следующим образом:

Листинг 10. Описание того, что имя пользователя не должно кэшироваться

Можно выполнить проверку, указав, что контроллер products использует кэширование функции представления (view). Добавьте кэширование в список помощников (helpers) и укажите представление в $cacheAction .

Листинг 11. Описание того, что контроллер products использует кэширование функции представления

Теперь, посмотрите товар. Вы должны увидеть файл, созданный в app/tmp/cache/views, который соответствует тому товару, который вы смотрели. Зайдите в систему под другим пользователем и посмотрите тот же самый товар. Вы увидите, что имя пользователя не было кэшированно. Отредактируйте этот товар. Теперь CakePHP известно, что нужно удалить кэшированное представление. Разве не изящно?

Использование тегов позволяет найти изящное решение кэширования представлений и сохранения актуального контента. Случается, что и этого недостаточно. Иногда приходится чистить кэш вручную.

Когда очищать кэш

Даже если вам известно, что подлежит кэшированию, а что нет, иногда возникает необходимость очищать кэш вручную. Может возникнуть мысль, что такая необходимость возникает при изменении и обновлении информации. Например, если товар был отредактирован, то представления просмотра и редактирования данного товара, так же как и представление index товаров должны быть удалены из кэша. Вы правы! Их действительно необходимо удалить из кэша.

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

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

Как очищать кэш

Аналогично тому, как CakePHP предоставляет различные способы кэширования данных, существует несколько способов удаления информации из кэша:

  • Для очистки кэша только от кэшированного представления «просмотра» товара 1 необходимо использовать следующую структуру: clearCache(‘products_view_1’); .
  • Для очистки кэша от всех представлений «просмотра» контроллера products необходимо использовать следующую структуру: clearCache(‘products_view’); .
  • Для очистки кэша от всех представлений контроллера products необходимо использовать следующую структуру: clearCache(‘products’); .
  • Для очистки кэша от различных типов представлений, необходимо передать массив в clearCache :
    Если необходимо очистить весь кэш, то вызовите функцию без параметров: clearCache(); . Эту функцию можно вызвать, создав контроллер emptycache и поместив вызов функции в функцию index. Данная функция должна вызываться вручную, или через что-либо в событии, которое должно быть автоматизировано процессом.

Заключение

Поздравляю! Вы прочитали всю серию до конца. Вероятно, вы в приподнятом настроении и готовы создавать свое собственное приложение.

Но прежде, в app/config/core.php, задайте 2 в качестве значения DEBUG. Это укажет CakePHP, что необходимо отображать отладочную информацию SQL в нижней части окна представлений. Кэшированные страницы хранятся в app/tmp/cache/views. Откройте одну из них, чтобы иметь представление о том, как выглядят кэшированные страницы. Удалите кэшированные файлы и представление товара. Обратите внимание на то, сколько запросов было сделано и как долго они выполнялись. Теперь перезагрузите. Представление было кэшировано. Сколько запросов было запущено на этот раз? Узнайте больше о кэшировании. Рассмотрите различные способы его использования в Tor. Когда разберетесь со всем окончательно, удалите его и займитесь разработкой своего собственного приложения.

Итак, вы много узнали из серии «Быстрое создание Web-сайтов с помощью CakePHP», но только создание своего собственного приложения с помощью CakePHP позволит применить свои знания на практике.

Ресурсы для скачивания

  • этот контент в PDF
  • Part 5 source code (os-php-cake5.source.zip | 158KB)

Похожие темы

  • Оригинал статьи: Cook up Web sites fast with CakePHP, Part 5: Adding cache.
  • Чтобы получить более подробную информацию о CakePHP, посетите сайт CakePHP.org.
  • Подробное описание CakePHP API. Здесь расположена свежая документация по CakePHP.
  • Огромное количество информации предлагается на сайте The Bakery, представляющем сообщество пользователей CakePHP.
  • Валидация данных в CakePHP использует Perl-совместимые регулярные выражения PHP.
  • Хотите узнать больше о шаблонах проектирования? Прочитайте книгу Шаблоны проектирования: Элементы объектно-ориентированного программного обеспечения многократного использования.
  • Прочитайте исходные материалы по созданию пользователей.
  • Прочитайте Википедия: Модель-Представление-Контроллер.
  • Полезные первоисточники по шаблону Модель-Представление-Контроллер.
  • Здесь представлен полный список различных типов шаблонов проектирования программного обеспечения.
  • Прочитайте о шаблонах проектирования.
  • Для получения дополнительной информации по PHP посетите Ресурсы проекта PHP на IBM developerWorks.
  • Посетите раздел, посвященный ПО с открытым исходным кодом, на developerWorks для получения обширного количества информации, инструментальных средств, и обновлений проекта, призванного помочь в разработке при помощи технологий с открытым исходным кодом и в использовании их совместно с продуктами IBM.
  • Интервью и обсуждения, которые будут интересны для разработчиков ПО, доступны для прослушивания на сайте подкасты developerWorks.
  • Внесите новшества в Ваш следующий проект разработки с открытым исходным кодом при помощи пробного программного обеспечения IBM, доступного для загрузки или представленного на DVD.

Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

Курсы CakePHP с созданием полнофункционального приложения

Новая статья от InBenefit, и на очереди еще один отличный PHP-фреймворк для разработки веб-приложений. То, что их так много, вовсе не удивительно, ведь PHP входит в пятерку популярных языков программирования по версии GitHub, уступая лишь JavaScript, Java и Ruby. Сегодня мы представляем вашему вниманию еще один программный каркас, на который стоит обратить внимание. Это CakePHP.

Созданный по принципу открытого программного обеспечения, программный фреймворк CakePHP разработан с реализацией шаблона MVC. В качестве основы был использован не менее известный фреймворк Ruby on Rails с заимствованием из него многих удачных идей. От аналогичных фреймворков отличается поддержкой PHP4/5. На том же GitHub CakePHP находится в четверке самых популярных PHP-технологий, на которой создано больше 130 тысяч проектов.


Достоинства CakePHP:
— улучшенное управление сессиями для простого тестирования и поддержка PHPUnit 4.x;
— согласование каркаса приложения и каркасов плагинов;
— упрощение сборки и перекомпоновки за счет возможности использования плагинов в качестве тем;
— сокращение времени обучения для новичков;
— структура, предусматривающая необходимость строгого следования соглашениям, приучает писать код правильно;
— простая адаптация под любые проекты;
— полная и легко читаемая документация.

Цукерберг рекомендует:  Php - В каком виде в php приходят результаты запроса из MySQL

Хотите выучить CakePHP у опытного преподавателя? Тогда выберите курсы Udemy (15-миллионой площадки для онлайн-обучения), которые наши специалисты подобрали специально для вас. Вы всего в шаге от получения важных дополнительных навыков программирования.

Курсы CakePHP с созданием полнофункционального приложения

Разработка веб-приложений на PHP с CakePHP 2

Преподаватель: IO LEARN (качественная площадка для компьютерного онлайн-обучения)
Стоимость: 20$
Количество студентов: 249+
Объем программы: 22 лекции; 1,5 часа
Уровень подготовки (требования для курса): основы PHP и HTML

Чему вы научитесь?
— Понимать принцип разработки на CakePHP
— Понимать шаблон MVC
— Создавать полноценное приложение
— jQuery AJAX

В программе этого курса предусмотрено больше 20 интерактивных видеолекций, которые дадут вам начальные знания по веб-разработке на одном из лучших фреймворков – CakePHP. Всего за каких-то полтора часа вы освоите все, что вам понадобится для профессиональной веб-разработки: от паттерна MVC до создания полнофункционального приложения.

Сначала вы научитесь устанавливать и настраивать CakePHP. Затем вам расскажут, как создавать свою тему и свои компоненты. Для реализации AJAX-функций в разрабатываемом приложении вы глубже изучите jQuery.

Целевая аудитория курса – начинающие и опытные разработчики, которые хотят учиться на практике. Если это о вас, смелей записывайтесь на курс прямо сейчас!

Передовые методы разработки на CakePHP 3

Преподаватель: IO LEARN
Стоимость: 20$
Количество студентов: 44+
Объем программы: 21 лекция; 50 минут
Уровень подготовки (требования для курса): основы PHP и HTML; иметь базовые знания о разработке на CakePHP (пройти первый курс из нашей подборки)

Чему вы научитесь?
— Принципы работы с CakePHP 3.x
— Повышать безопасность разработанных приложений
— Использовать компонент CSRF
— Реализовывать функции CAPTCHA в своих приложениях
— Регистрировать все события в приложении в базе данных
— Использовать плагин DataTables для jQuery
— Использовать TimeHelper

Если первый курс в нашем обзоре начальный, в котором можно узнать основные принципы разработки на CakePHP, то этот курс его своеобразное продолжение.

В рамках программы курса вас научат реализовывать защиту приложения с помощью компонента от межсайтовой подделки запроса (CSRF). Вы научитесь регистрировать события, происходящие в вашем приложении, и сохранять их в базу данных MySQL. Также вы изучите основные отношения (BelongsTo, HasOne, HasMany и BelongsToMany) и оцените в действии ассоциации и «жадную загрузку». Кроме того, вас научат работать с TimeHelper и избегать появления многих ошибок MySQL. Вы также сами реализуете поведение базы данных.

Целевая аудитория – начинающие разработчики, имеющие понятие о разработке с фреймворком Cake PHP и желающие улучшить свои навыки с применением более серьезных подходов. Не теряйте времени и пройдите этот курс сразу же, после того как пройдете первый.

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

Перед началом обучения на любом из представленных курсов вам обязательно нужно иметь базовые знания PHP и HTML. Соответственно, советуем пройти курсы PHP и HTML.

Видеокурс «Фреймворк CakePHP: с Нуля до Гуру на примере создания корпоративного сайта». (Андрей Кудлай — Webformyself)

Автор(ы): Андрей Кудлай

Первый и единственный в Рунете исчерпывающий видеокурс на тему работы с фреймворком CakePHP… Уже в ближайшие 2 месяца вы из полного новичка веб-программирования превратитесь в профессионала, которому по зубам будут даже очень сложные и дорогие веб-проекты… Если вы будете посвящать всего лишь 2-3 часа в день изучению материалов курса, то уже менее чем через 60 дней вы уверенно сможете создавать сайты любой сложности, используя фреймворк CakePHP. Вы создадите свою первую страничку вашего будущего сайта уже во время прохождения первых занятий курса. Если у вас не получится либо вы решите, что этот курс вам не подходит, то я верну вам все потраченные деньги обратно!

Смотреть видео:

Фреймворк CakePHP: с Нуля до Гуру на примере создания корпоративного сайта. (Андрей Кудлай — Webformyself)

  • Часть 1. Фреймворк CakePHP. Изучаем теорию и возможности фреймворка

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

ВИДЕОУРОКИ ПЕРВОЙ ЧАСТИ КУРСА:

В первом уроке курса мы пройдемся по организационным моментам, рассмотрим структуру курса, узнаем основные источники документации, с которой будем работать на протяжении всего курса. Также обозначим необходимое программное обеспечение (сервер, редактор, версия фреймворка CakePHP)

Установка фреймворка на сервер и его настройка. Также, для облегчения дальнейшего процесса разработки мы установим плагин DebugKit и познакомимся с ним поближе

  • Урок 3: Установка консоли CakePHP

CakePHP, как и многие фреймворки, имеет генератор кода. Код генерируется с помощью специальной консольной утилиты CakePHP’s Bake console. Если нам нужно построить несложное работающее приложение с системой управления, не заморачиваясь с написанием кода, тогда консоль Кейка – то, что нужно. В этом уроке мы установим консоль кейка и рассмотрим нюансы ее установки

  • Урок 4: URL-адреса фреймворка CakePHP

Более плотно приступим к изучению фреймворка CakePHP и познакомимся со структурой URL-адресов Кейка. CakePHP уже по умолчанию работает с чистыми или, так называемыми ЧПУ-адресами (ЧПУ – Человеку Понятный УРЛ). При этом каждая часть (сегмент) этого адреса является значимой. Также CakePHP позволяет изменять имеющиеся по умолчанию адреса на любые другие, нужные нам, предоставляя для этих целей гибкие возможности раутинга (маршрутизации)

  • Урок 5: Соглашения об именованиях. Контроллеры

В этом уроке мы с Вами познакомимся с соглашениями или конвенциями об именованиях. Данные соглашения дают рекомендации по тому, как называть файлы, классы, методы и таблицы базы данных в разрабатываемом проекте. Следуя конвенциям, мы значительно облегчаем процесс разработки сайта и знакомимся с таким понятием, как магия Кейка (automagic). Также в этом уроке мы создадим свой первый контроллер

Контроллеры в паттерне MVC постоянно взаимодействуют с видами. Для того, чтобы наш вид получился динамическим, необходимо передавать в вид те или иные данные, которые часто получаем из базы данных. В этом уроке мы с Вами изучим метод set(), позволяющий передавать данные из контроллера в вид

  • Урок 7: Метод модели find(). Часть 1

Основа любого динамичного сайта заключается в хранении информации в базе данных и получении информации оттуда. За работу с базой данных в Кейке отвечает модель, методы которой можно использовать в контроллере. Один из таких методов – метод find(). Используя этот метод, мы можем получить информацию из базы данных. Ну а комбинируя параметры метода find(), мы можем гибко управлять получением данных

  • Урок 8: Метод модели find(). Часть 2

В этом уроке мы продолжим работу с параметрами метода find(). Вы увидите, как легко данный метод позволяет не только получить данные определенного поля или всей таблицы, но возвращает их в уже удобном для нас готовом массиве. Например, используя один только метод find(), всего одной строкой кода мы можем получить уже готовый к использованию массив, представляющий из себя дерево

  • Урок 9: Магические типы метода find()

Текущий урок мы также продолжим изучением метода find(). В данном уроке мы познакомимся с так называемыми магическими типами (Mafic Find Types). Используя этот метод и зная название поля (или полей), из которого необходимо получить данные, мы можем легко это сделать, не используя никаких дополнительных параметров. При этом здесь возникает столь много вариантов получения данных, что мы буквально можем экспериментировать с ними

  • Урок 10: Выводим данные в шаблон

Итак, мы научились получать и передавать данные в шаблон. Теперь пришла очередь познакомиться детальнее с еще одной составной частью паттерна MVC – видами. В этом уроке мы создадим файлы видов и выведем на экран полученные в них данные

  • Урок 11: Вывод отдельной статьи

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

В этом уроке мы познакомимся с еще одним методом модели – методом exists(). Этот метод очень полезен, когда нам необходимо просто проверить существование в базе данных той или иной записи

Фреймворк CakePHP предоставляет разработчикам 2 незаменимые вещи, ускоряющие процесс разработки – Хелперы (Heplers) и Компоненты (Components). Используя Хелперы и Компоненты, мы можем удобнее работать с сессиями, формами, легко и быстро создать постраничную навигацию для статей и прочая, и прочая. Кейк предлагает как уже готовые Компоненты и Хелперы, которыми мы можем пользоваться, так и возможность создавать собственные Компоненты и Хелперы

  • Урок 14: Хелпер для работы с формами

Одним из ключевых и часто используемых хелперов, является хелпер по работе с формами (Form Helper). Изучив работу с этим помощником, мы без труда создадим форму, которую можно использовать для сохранения информации в базу данных или отправки формы на Email. При этом помощник Form Helper позволяет не только создавать формы, но и автоматически заполняет их данными и буквально догадывается о том, какой тип поля формы необходимо сгенерировать

  • Урок 15: Добавляем данные в БД

Познакомившись с хелпером для работы с формами, мы с Вами теперь без проблем можем генерировать нужные нам HTML-формы. В этом уроке мы изучим сразу несколько методов, позволяющих сохранять информацию из форм в базу данных. Ключевыми здесь являются методы create() и save(). Последний метод напрямую предназначен для сохранения данных. При этом нам не нужно заботиться о получении данных из каждого конкретного поля. Достаточно вызвать метод, передать ему объект данных, и метод save() сделает все остальное

  • Урок 16: Валидация данных в CakePHP

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

В этом уроке мы изучим работу с методом delete(). Как следует из названия, данный метод предназначен для удаления записей из базы данных. Также, используя этот метод, мы можем организовать каскадное удаление зависимых данных

В этом уроке мы изучим работу с Элементами (elements). Элементы используются в видах для того, чтобы в них можно было вынести повторяющиеся участки кода и затем многократно использовать в других видах. Например, мы вполне можем вынести в Элемент код меню или сайдбар

В этом уроке мы создадим еще одну функцию для управления нашим блогом – это будет функция редактирования данных. Для данного функционала мы воспользуемся уже знакомым нам методом save(), позволяющим сохранять данные в БД

  • Урок 20: Ассоциации и связи моделей


Одна из наиболее приятных и мощных возможностей CakePHP – ассоциации моделей. Эта возможность является одной из составляющих магии Кейка. Используя ассоциации, мы можем организовать всего одной строкой кода связи между различными таблицами базы данных. Благодаря установленным связям, нам не нужно писать запросы для получения дополнительных данных, эти данные Кейк любезно предоставит нам автоматически, используя ту самую автомагию (automagic)

  • Урок 21: Работаем с категориями

В этом уроке мы продолжим написание нашего приложения – блога. В уроке мы поработаем с категориями постов и закрепим на практике получение данных из БД и оперирование этими данными

  • Урок 22: Зависимость моделей на практике

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

Фреймворк CakePHP предоставляет специальный метод, позволяющий гибко работать с видами – это метод render(). Данный метод неявно вызывается в конце каждого экшена контроллера, подгружая вид по умолчанию. Но Кейк позволяет вызывать данный метод в любом месте кода контроллера, тем самым указывая, какой вид необходимо загрузить

  • Урок 24: Работа с темами в CakePHP

CakePHP позволяет не только гибко управлять шаблонами (Layout) и видами (View), но и предоставляет возможности для темизации сайта. Используя эти возможности, мы можем создать для одного и того же сайта несколько тем с абсолютно различным оформлением и использовать по желанию ту или иную тему. Это действительно мощная возможность Кейка

  • Урок 25: Приготовление кода в консоли (Cake Bake)

В данном уроке мы вернемся к вопросу работы с консольной утилитой Кейка, позволяющей «испекать код» (Cake Bake). В качестве примера мы приготовим с нуля коды Контроллера, Модели и Вида нашего простого сайта. При этом на приготовление кода мы потратим считанные минуты, ни единой строчки кода мы не будем писать самостоятельно, и весь сгенерированный код будет абсолютно рабочим

  • Урок 26: Регистрация и авторизация. Часть 1

В последних трех уроках первой части курса мы поработаем с компонентом Auth. Данный компонент позволяет не только ограничить доступ к определенным частям сайта или ко всему сайту целиком, но и организовать систему регистрации и авторизации, организовать работу с ролями

  • Урок 27: Регистрация и авторизация. Часть 2

В этом уроке мы продолжим работу с компонентом фреймворка CakePHP – Auth, позволяющим организовать работу с учетными записями пользователей

  • Урок 28: Регистрация и авторизация. Часть 3

В этом уроке мы завершим работу с компонентом фреймворка CakePHP – Auth, позволяющим организовать работу с учетными записями пользователей

  • Часть 2. Разработка сайта с использованием фреймворка CakePHP

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

Основа данного сайта – каталог товаров. Функционал, который будет нами реализован в курсе:

  • категории
  • товары
  • карточка товара
  • страницы
  • авторизация
  • многоуровневое меню категорий с поддержкой неограниченного уровня вложенности
  • и, конечно же, управление всем этим, т.е. администраторская часть сайта.

После изучения данной части Вы закрепите на практике все изученное в первой части курса, а также почерпнете для себя много новой информации и возможностей.

ВИДЕОУРОКИ ВТОРОЙ ЧАСТИ КУРСА:

Итак, у нас есть верстка шаблона (html-страничка), который я нашел на одном из сайтов, предлагающем бесплатные шаблоны. Задачей первого урока будет перенос данного шаблона в структуру фреймворка CakePHP. Мы должны перенести код самой html-странички, а также скрипты, стили, картинки и шрифты. В итоге, при обращении к главной странице нашего сайта мы должны увидеть картинку, которая ничем не должна отличаться от исходного шаблона HTML

  • Урок 2: Создаем первый контроллер сайта

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

  • Урок 3: Формируем многоуровневое меню. Часть 1

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

  • Урок 4: Формируем многоуровневое меню. Часть 2

В этом уроке мы продолжим реализовывать многоуровневое меню категорий для нашего сайта

  • Урок 5: Создаем компонент меню

Итак, мы создали многоуровневое меню, и оно замечательно работает. Однако, пока что это меню работает только на главной странице. Нам же необходимо, чтобы меню было доступно на всех страницах сайта. Чтобы избежать дублирования кода, мы создадим собственный компонент – компонент Меню – который будем использовать на всех страницах сайта

В этом уроке мы займемся реализацией блока Новые товары на главной странице. К слову, навигация по данному блоку реализована в шаблоне с довольно привлекательным эффектом. Итак, мы выведем все имеющиеся на сайте новинки товаров и реализуем навигацию по блоку новинок

В данном уроке мы будем работать с шаблоном категорий. Этот шаблон отличается от главной страницы сайта, здесь уже есть колонка сайдбара, выводятся товары каталога или выбранной категории, присутствует постраничная навигация (пагинация) по товарам

  • Урок 8: Выводим товары категорий

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

Данный урок будет посвящен работе с постраничной навигацией (пагинацией). В теоретической части мы не затрагивали этот момент, здесь же мы детально его изучим. Для работы с пагинацией CakePHP предлагает специальный Компонент и Хелпер, которые, работая в паре, сделают реализацию пагинации предельно простой задачей

  • Урок 10: Меню категорий в сайдбаре

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

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

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

Наш шаблон предполагает не только меню категорий, но и меню страниц, которое так же, как и меню категорий, должно присутствовать на всех страницах нашего сайта. В этом уроке мы создадим меню страниц, и при его создании мы будем использовать уже созданный нами ранее компонент Меню

В этом уроке мы с Вами поработаем с еще одним компонентом Кейка – CakeEmail. Данный компонент представляет собой класс, позволяющий работать с отправкой писем на email. На нашем сайте есть страница контактов, которая может предполагать наличие контактной формы. Давайте создадим такую форму и реализуем логику отправки данных из нее на email

  • Урок 15: Архитектура админской части

Начиная с текущего урока, мы приступаем к разработке админской части нашего сайта. В этом уроке мы продумаем архитектуру админской части, более плотно поработаем с маршрутизацией (раутингом) и узнаем, как можно работать с префиксами в URL-адресах

  • Урок 16: Ограничиваем доступ к админке

Данный урок будет посвящен ограничению доступа к админской части сайта. Мы воспользуемся уже знакомым нам компонентом Auth, создадим форму авторизации и ограничим доступ к админским экшенам

Итак, мы добрались до управления товарами. В этом уроке мы реализуем редактирование товара. Администратор сможет изменять название, описание товара, его цену и прочие данные, а также перемещать его в нужную категорию

  • Урок 18: Дерево категорий товара
Цукерберг рекомендует:  Linux - Сетевая карта не видит сети

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

  • Урок 19: Устанавливаем визуальный редактор


Обязательным компонентом админской части является визуальный редактор, поскольку администрировать сайт может пользователь, который впервые слышит слово HTML. Соответственно, мы должны сделать удобным процесс редактирования даже для таких пользователей. В этом уроке мы установим и настроим визуальный редактор CKEditor, а также интегрируем файловый менеджер KCFinder. В процессе мы узнаем нюансы установки и настройки подобных вещей в CakePHP

В этом уроке мы реализуем функционал добавления товара. Здесь все будет предельно просто, поскольку данный функционал очень напоминает реализованный ранее функционал редактирования товара

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

Основываясь на реализованном ранее функционале управления товарами, мы можем легко реализовать управлением страницами. Здесь мы наглядно увидим, как фреймворк облегчает нам жизнь при написании кода. Фактически весь необходимый функционал – добавление, редактирование и удаление страниц – мы реализуем за один текущий урок

  • Урок 23: Управление метаданными

В этом уроке будет показано, как организовать управление метаданными страниц Вашего сайта. Мы выведем название страницы (title), ее ключевые слова (keywords) и описание (description)

  • Урок 24: Управление категориями

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

  • Урок 25: Загрузка картинок. Часть 1

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

  • Урок 26: Загрузка картинок. Часть 2

В данном уроке мы продолжим реализацию функционала по загрузке и ресайзу изображений для товаров

Какая разница между использованием консоли cakephp и использованием IDE для создания приложения?

Я новичок cakephp, и я хотел бы знать, какой метод вы используете для создания своего проекта cakephp. В учебнике, которое я прочитал, используется консоль cakephp для извлечения приложения, но в книге у меня есть IDE для создания приложения. Кажется, консоль удобнее, потому что она может генерировать разные названия проектов. Использование IDE потребует от разработчика вручную создавать все папки. Спасибо за ответ.

3 ответа

2 Решение Rob Wilkerson [2010-09-01 18:59:00]

То, что я думаю, что вы не слышите достаточно, в ответах до сих пор состоит в том, что они действительно два разных инструмента с двумя разными целями. Cake bake Утилита командной строки не создаст ваше приложение. Он создаст строительные леса для тех частей приложения, которые вы определяете. Это отличная отправная точка, но все, что есть.

Вы будете использовать вашу среду IDE для извлечения битов, которые делают ваше приложение, ну, приложение.

Оба инструмента очень, очень полезны, поэтому на самом деле это не ответ на один или несколько. Хотя мне нравится использовать инструмент bake для начала работы, действительно существует не так много папок, которые вы должны создать, если выбрали путь IDE. После того, как вы запустите базу кода Cake, большая часть этого материала, даже бит, ориентированный на приложение, ждет вас, чтобы заполнить их.

Я редко использую bake для создания представлений, и как только я испекла модель или две, я часто создаю других с нуля в текстовом редакторе. Там нет «правильного» пути; просто понять, что каждый дает вам и использовать в зависимости от того, что лучше всего подходит вашему рабочему процессу в данный момент времени.

Возможно, вы ищете что-то вроде ModelBaker. Я лично его не использовал, но из того, что я вижу, это гладкий графический интерфейс поверх CakePHP.

FWIW, я использовал JetBrain PHPStorm и любил его.

2 Leo [2010-09-01 17:50:00]

Я использую оба метода, в зависимости от состояния разработки проекта и/или базы данных.

Часто я буду копировать контроллер, модель и представления и просто искать и заменять соответствующие имена.

Если у меня есть большая база данных, я буду использовать bake.

Что касается IDE, после многих болей, разочарований и тестирования я остановился на NetBeans. Я некоторое время использовал Komodo, когда мне приходилось работать в Windows (Java ел мои окна), но теперь я на Ubuntu, а Macs Netbeans — мощный, быстрый и гибкий. Тем не менее я по-прежнему не касался Eclipse кем-то другим.

LXF142:CakePHP

Подписка на печатную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров) Подписка на электронную версию Весь 2015 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров) Подшивки старых номеров журнала (печатные версии) Весь 2014 год (12 номеров) Первое полугодие (6 номеров) Второе полугодие (6 номеров)
CakePHP
  • Часть 1: CakePHP: Раз – и web-при­ло­же­ние!
  • Часть 2: CakePHP: Раз – и web­-приложениe!
  • Часть 3: CakePHP: Пишем загрузчик файлов
  • Часть 4: CakePHP: Сайт для закладок
  • Заключсение: CakePHP: Важные ресурсы

Содержание

CakePHP: Важные ресурсы

Бы­ли у нас ве­се­лые вре­ме­на – бы­ли и гру­ст­ные; бы­ли пло­до­твор­ные – и про­блем­ные то­же бы­ли. Та­ков путь раз­ра­бот­чи­ка, понем­но­гу осоз­наю­ще­го пре­иму­ще­ст­ва и эко­но­мию вре­мени при ра­бо­те в сре­де. Ес­ли вы изу­чи­ли все че­ты­ре уро­ка се­рии, то на­бра­ли со­лид­ный опыт раз­ра­бот­ки на CakePHP, и мо­же­те взять рас­смот­рен­ные на­ми про­ек­ты и рас­ши­рить их в со­от­вет­ст­вии с ва­ши­ми ну­ж­да­ми или при­менить пред­став­лен­ные тех­но­ло­гии в раз­ра­бот­ке соб­ст­вен­но­го про­ек­та с ну­ля.

В обо­их слу­ча­ях, с CakePHP вы сде­лае­те это бы­ст­рее, чем без него; и вдо­ба­вок станете при­вле­ка­тельнее для про­ти­во­по­лож­но­го по­ла. Оп­ро­вер­жение: че­ст­но-то го­во­ря, при­вле­ка­тельнее вы не станете, за­то об­ре­те­те но­вое ощу­щение уве­рен­но­сти и успе­ха, по­то­му что смо­же­те бы­ст­ро за­вер­шать про­ек­ты, на ко­то­рые ина­че уш­ли бы неде­ли.

При ра­бо­те над про­ек­та­ми внут­ри и око­ло CakePHP у вас, несо­мнен­но, бу­дут возникать во­про­сы. Со­дер­жание – пре­ж­де все­го, и ко­ман­да раз­ра­бот­чи­ков яд­ра CakePHP де­ла­ет все воз­мож­ное, что­бы пре­доста­вить на­бор ре­сур­сов, ко­то­рые до­пол­ня­ли бы сам код яд­ра. Дер­жи­те эту ста­тью под ру­кой – быть мо­жет, когда-нибудь она вас спа­сет!

До­маш­няя страница – http://cakephp.org – пре­крас­ное ме­сто для стар­та, по­то­му что на ней со­б­ра­ны в од­ном мес­те ссыл­ки на все офи­ци­аль­ные ре­сур­сы.

«По­ва­рен­ная книга»

Пе­ре­клю­че­ние ме­ж­ду вер­сия­ми на сай­те CakePHP Cookbook очень удоб­но.

В ка­ж­дой ре­ли­гии есть своя свя­щен­ная Книга. Она хранит все ве­ро­вания, цен­траль­ную фи­ло­со­фию и мас­су дру­гой ин­фор­ма­ции, пе­ре­да­вае­мой из по­ко­ления в по­ко­ление и со­став­ляю­щей эту ре­ли­гию. Воз­вра­ща­ясь от ре­ли­гии к Linux: CakePHP ра­бо­та­ет по­доб­ным же об­ра­зом. «По­ва­рен­ная книга» CakePHP [Cookbook], ко­то­рую вы най­де­те на сай­те http://book.cakephp.org – луч­ший ис­точник ин­фор­ма­ции о яд­ре CakePHP, а так­же ме­сто, где мож­но най­ти при­ме­ры и по­яснения по ис­поль­зо­ванию раз­лич­ных час­тей дан­ной сре­ды. В ней пол­но пре­крас­ных ин­гре­ди­ен­тов CakePHP и ре­цеп­тов, и ог­ром­ное ко­ли­че­­ст­во ку­ли­нар­ных ме­та­фор. Книга пре­достав­ля­ет не толь­ко спра­воч­ную ин­фор­ма­цию, но и по­лез­ные при­ме­ры ко­да, ко­то­рые по­мо­гут вам осво­ить раз­лич­ные час­ти яд­ра.

Ру­ко­во­дство раз­би­то на раз­де­лы по вер­си­ям. Ес­ли вы ра­бо­тае­те со ста­рой про­грам­мой на CakePHP 1.1, мо­же­те про­честь толь­ко эту вер­сию ру­ко­во­дства, так как при­ве­ден­ная в ней ин­фор­ма­ция ак­ту­аль­на для ис­поль­зуе­мо­го ва­ми ре­ли­за. То же ка­са­ет­ся CakePHP 1.2. А вер­сия ру­ко­во­дства по умол­чанию для по­следнего ре­ли­за – 1.3.

Бо­лее то­го, ру­ко­во­дство CakePHP доступ­но на раз­лич­ных язы­ках. Язы­ков свы­ше два­дца­ти, и ес­ли вы не го­во­ри­те на язы­ке, ко­то­рый ви­ди­те на эк­ране, есть ве­ро­ят­ность, что тот же текст есть на дру­гом язы­ке, бо­лее удоб­ном для вас. При по­ис­ке ин­фор­ма­ции по ре­шению ка­кой-ли­бо про­бле­мы об этом нуж­но помнить в пер­вую оче­редь.

«Пе­кар­ня»

Вве­ди­те име­на сай­тов, свя­зан­ных с на­шей «кухней». Bakery [Пе­кар­ня] – http://bakery.cakephp.org – ме­сто, где поль­зо­ва­те­ли мо­гут соз­да­вать ста­тьи, опи­сы­вать свой опыт, при­во­дить при­ме­ры ко­да или де­лить­ся го­то­вы­ми ре­шения­ми с дру­ги­ми чле­на­ми со­об­ще­ст­ва. Един­ст­вен­ная цель «пе­карни» – пре­доста­вить сред­ст­ва для со­вме­ст­ной ра­бо­ты и об­ме­на ко­дом и взаи­мо­дей­ст­вия с дру­ги­ми раз­ра­бот­чи­ка­ми. Там есть ста­тьи от ве­ду­щих раз­ра­бот­чи­ков, вы­даю­щих­ся чле­нов со­об­ще­ст­ва и да­же от но­вых поль­зо­ва­те­лей, ко­то­рые де­лят­ся ко­дом, ко­то­рый по­ка­зал­ся им по­лез­ным. В «пе­карне» ог­ром­ное ко­ли­че­­ст­во фраг­мен­тов ко­да для всех вер­сий CakePHP, и при возник­но­вении про­блем там лег­ко най­ти код от уча­стников со­об­ще­ст­ва, спо­соб­ный их ре­шить.

На­при­мер, ес­ли вы хо­ти­те ин­тег­ри­ро­вать PayPal с CakePHP, спер­ва зай­ди­те в «пе­кар­ню» – и най­де­те там вполне ра­бо­то­спо­соб­ные ком­понен­ты, мо­ду­ли рас­ши­рения и мно­гое дру­гое для ин­те­гра­ции с PayPal, от це­лой банды поль­зо­ва­те­лей. То же ка­са­ет­ся ин­те­гра­ции с Twitter, ло­ги­на в Facebook и про­чих по­пу­ляр­ных функ­ций, ко­то­рые мо­гут при­го­дить­ся вам для но­во­го ре­во­лю­ци­он­но­го web-при­ло­жения.

Обя­за­тель­но до­бавь­те ста­тью са­ми, ес­ли соз­да­ди­те нечто но­вое, или об­но­ви­те вер­сию ста­тьи, ес­ли она уже су­ще­ст­ву­ет. Как я уже ска­зал, имен­но со­об­ще­ст­во де­ла­ет CakePHP та­кой пре­восход­ной сре­дой раз­ра­бот­ки.

«Пе­кар­ня» мо­жет по­хва­лить­ся и от­лич­ным ав­то­ма­ти­че­­ским пе­ре­во­дом, что га­ран­ти­ру­ет доступ­ность со­дер­жи­мо­го ши­ро­ко­му со­об­ще­ст­ву поль­зо­ва­те­лей со все­го ми­ра.

Спи­сок клас­сов API — од­на из са­мых по­лез­ных стра­ниц для бы­ст­ро­го по­ис­ка.

Еще во вре­ме­на, когда я изу­чал Java, я по­нял, что ис­кать ин­фор­ма­цию в API час­то бы­ст­рее, чем в по­ис­ко­вой сис­те­ме. В API CakePHP, ко­то­рый мож­но най­ти по ссыл­ке http://api.cakephp.org, лег­ко ори­ен­ти­ро­вать­ся, и пе­ре­ме­щать­ся там мож­но раз­ны­ми спо­со­ба­ми. В об­щем слу­чае, пер­вое, что вы вы­бе­ре­те – это клас­сы [Classes]. Здесь пред­став­лен ал­фа­вит­ный спи­сок доступ­ных клас­сов. Клик­нув по любому клас­су, мож­но по­лу­чить ис­чер­пы­ваю­щую ин­фор­ма­цию о нем и его свой­ст­вах и ме­то­дах.

Ныне опуб­ли­ко­ва­ны три вер­сии API, для ка­ж­дой из вер­сий 1.1, 1.2 и те­ку­щей вет­ки 1.3.

Во­про­сы по CakePHP

«Во­про­сы по Cake PHP» (http://ask.cakephp.org) – это сайт во­про­сов и от­ве­тов, ко­то­рый под­дер­жи­ва­ет­ся и мо­де­ри­ру­ет­ся поль­зо­ва­те­ля­ми и по­зво­ля­ет на­пря­мую за­дать во­прос о возник­шей у вас про­бле­ме или по­де­лить­ся иде­ей, мнение о ко­то­рой вы хо­ти­те услы­шать. Когда вы сфор­му­ли­руе­те во­прос, он поя­вит­ся на сай­те, а дру­гие поль­зо­ва­те­ли смо­гут на него от­ве­тить. Там вы по­лу­чите дей­ст­ви­тель­но ин­те­рес­ные и по­лез­ные ком­мен­та­рии и мнения. Они могут по­мочь вам бы­ст­ро и лег­ко про­вес­ти от­лад­ку и вы­явить про­бле­мы, ко­то­рые в про­тив­ном слу­чае при­шлось бы ис­кать ме­то­дом проб и оши­бок. Вы так­же смо­же­те сэ­ко­но­мить вре­мя на чте-нии до­ку­мен­та­ции, не от­но­ся­щей­ся к де­лу.

По­лу­чив от­ве­ты, вы смо­же­те про­го­ло­со­вать за наи­бо­лее пра­виль­ный и тем са­мым спо­соб­ст­во­вать по­вы­шению ав­то­ри­те­та его ав­то­ра в со­об­ще­ст­ве.

Во­про­сы на этом сай­те ав­то­ма­ти­че­­ски пуб­ли­ку­ют­ся в Twitter, и что­бы сле­дить за ними, до­бавь­те в дру­зья @CakeQs. В ка­че­­ст­ве до­полнения к описанным серь­ез­ным ре­сур­сам вре­мя от вре­мени мы про­во­дим спе­ци­аль­ные ме­ро­прия­тия (под­робнее о них чуть поз­же), на ко­то­рых так­же за­пи­сы­ва­ем скрин­ка­сты и дру­гие по­лез­ные ви­део­ро­лики. Эти ро­ли­ки вы­кла­ды­ва­ют­ся на недав­но за­пу­щен­ном сай­те CakePHP TV: http://tv.cakephp.org. Там вы най­де­те док­ла­ды с кон­фе­рен­ций, скрин­ка­сты от поль­зо­ва­те­лей и ин­тер­вью с чле­на­ми со­об­ще­ст­ва­ми и основ­ны­ми со­трудника­ми.

На этом сай­те вы можете не толь­ко смот­реть ви­део­ро­ли­ки, но и раз­ме­щать свои, а также де­лить­ся идея­ми для но­вых ма­те­риа­лов. Воз­мож­но, у вас есть пре­крас­ная идея, ко­то­рая принесет поль­зу и вам, и со­об­ще­ст­ву в це­лом. Про­сто раз­мес­ти­те ее на сай­те CakePHP TV, и ее уви­дят дру­гие поль­зо­ва­те­ли, под­хва­тят, снимут скрин­каст или ви­део­ро­лик и за­гру­зят на сайт.

Как и с дру­ги­ми рас­смот­рен­ны­ми ре­сур­са­ми, глав­ную роль здесь иг­ра­ет поль­зо­ва­тель­ский кон­тент. Ес­ли у вас есть ин­те­рес­ный ви­део­ро­лик или скрин­каст, имею­щий от­но­шение к CakePHP, по­де­ли­тесь им с со­об­ще­ст­вом и по­лу­чи­те свои пять ми­нут сла­вы!

CakeFest: кон­фе­рен­ция CakePHP

Раз в го­ду Cake Software Foundation про­во­дит CakeFest – http://cakefest.org – по­тря­саю­щую кон­фе­рен­цию по CakePHP для чле­нов со­об­ще­ст­ва. Что­бы ме­ро­прия­тие оста­ва­лось доступ­ным для все­го ми­ро­во­го со­об­ще­ст­ва, ме­сто его про­ве­дения ка­ж­дый год ме­ня­ет­ся. И ес­ли вы хо­ти­те по­се­тить оче­ред­ной CakeFest, но для вас это слиш­ком да­ле­ко, есть шан­сы, что в сле­дую­щий раз он бу­дет бли­же.

CakeFest обыч­но длит­ся че­ты­ре дня. Пер­вые два от­ве­де­ны на про­фес­сио­наль­ные тренин­ги от ве­ду­щих раз­ра­бот­чи­ков CakePHP. Это ред­кая воз­мож­ность по­общать­ся с ними на лич­ных встре­чах и тренин­гах и встре­тить­ся с основ­ны­ми док­лад­чи­ка­ми и клю­че­вы­ми чле­на­ми со­об­ще­ст­ва. Фор­ми­ро­вание се­ти техниче­­ских кон­так­тов в со­об­ще­ст­ве CakePHP по­мо­жет вам по­лу­чить и со­вет, и ра­бо­ту!

Как толь­ко ин­фор­ма­ция о сле­дую­щей кон­фе­рен­ции станет доступ­ной, ее рас­пи­сание поя­вит­ся на сай­те «пе­карни», и с по­яв­лением но­вой ин­фор­ма­ции об­но­вит­ся и сайт.

Важ­ное за­ме­чание о PHP

Но­вич­ки в CakePHP, осо­бен­но те, что сла­бо зна­ко­мы с PHP в це­лом и ре­ши­ли наскоком осво­ить CakePHP, что­бы по­бы­ст­рее ре­шить свои за­да­чи, час­то за­бы­ва­ют, что у про­блем, ко­то­рые они пы­та­ют­ся ре­шить, мо­жет не быть ре­шений или реа­ли­за­ции в сре­де. Это мо­жет по­ка­зать­ся глу­пым мно­гим бо­лее опыт­ным поль­зо­ва­те­лям, но ра­бо­тая в сре­де, лег­ко за­быть, что на са­мом де­ле вы ра­бо­тае­те с PHP, и вся его функ­цио­наль­ность доступ­на вам в лю­бое вре­мя.

Ес­ли вы ище­те ре­шение про­бле­мы, и, на ваш взгляд, оно уже долж­но су­ще­ст­во­вать, но в CakePHP его нет, ско­рее все­го это ка­ким-то об­ра­зом уже реа­ли­зо­ва­но в PHP. Для бо­лее под­роб­ной ин­фор­ма­ции зай­ди­те на http://php.net.

Бло­ги раз­ра­бот­чи­ков

На этом ре­сур­сы по CakePHP не за­кан­чи­ва­ют­ся. Раз­ра­бот­чи­ки CakePHP, а так­же поль­зо­ва­те­ли дан­ной сре­ды час­то пи­шут неве­ро­ят­но по­лез­ные ста­тьи в сво­их пер­со­наль­ных бло­гах. Эти ста­тьи ох­ва­ты­ва­ют ин­те­рес­ные ва­ри­ан­ты ра­бо­ты в сре­де, а так­же ре­шения всех про­блем, с ко­то­ры­ми они стал­ки­ва­лись.

Марк Сто­ри [Mark Story], один из ве­ду­щих раз­ра­бот­чи­ков CakePHP, час­то пи­шет занима­тель­ные ста­тьи о те­ку­щих раз­ра­бот­ках в CakePHP на http://mark-story.com. В его бло­ге так­же име­ет­ся мас­са ар­хив­ных ста­тей, сохраняющих ак­ту­аль­ность для CakePHP 1.2 и 1.3.

Так как я ра­бо­таю в CakeDC (http://cakedc.com), то упо­мя­ну этот сайт из-за его со­дер­жи­мо­го. Сайт CakeDC под­дер­жи­ва­ют несколь­ко ве­ду­щих раз­ра­бот­чи­ков CakePHP, и на нем мож­но най­ти ста­тьи об ис­поль­зо­вании раз­лич­ных мо­ду­лей и о раз­ра­бот­ке яд­ра, а так­же об ин­те­рес­ных под­хо­дах к та­ким про­бле­мам, как пе­ре­вод и мар­шру­ти­за­ция. По­се­ти­те его.

Хо­тя http://www.pseudocoder.com давнень­ко не об­нов­лял­ся, он предоставля­ет са­мую обшир­ную под­бор­ку ин­те­рес­ных ста­тей о CakePHP 1.3, и это пре­крас­ный ре­сурс для по­ис­ка ин­те­рес­но­го и по­лез­но­го кон­тен­та от поль­зо­ва­те­лей со все­го ми­ра.

Спи­сок да­ле­ко не по­лон – на пе­ре­чис­ление всех пре­крас­ных бло­гов со ссыл­ка­ми на ре­сур­сы и ин­фор­ма­цию о CakePHP по­тре­бо­ва­лось бы слиш­ком мно­го мес­та. Од­на­ко это хо­ро­шая под­бор­ ка для на­ча­ла.

На­конец, луч­шим сер­висом аг­ре­га­ции по CakePHP является PlanetCakePHP (http://planetcakephp.org). Сер­вис этот ав­то­ма­ти­че­­ский, и бла­го­да­ря ему мож­но ви­деть ог­ром­ное ко­ли­че­­ст­во поль­зо­ва­тель­ских ста­тей в мо­мент их по­яв­ления. Под­пи­ши­тесь на RSS – это са­мый про­стой спо­соб по­лу­чать ак­ту­аль­ную ин­фор­ма­цию.

Код сво­бод­ный!

Итак, нам есть что по­чи­тать… Но у нас, ве­ро­ят­но, есть и ра­бо­та, и для ре­шения на­шей за­да­чи ну­жен сво­бод­ный код. Сво­бод­ный код – луч­ший тип ко­да, и за­ле­жи его име­ют­ся в Се­ти. С че­го на­чать по­иск? Пре­крас­ное ме­сто для стар­та – Github (http://github.com): там есть удоб­ная ис­то­рия и спи­ски поль­зо­ва­те­лей и про­ек­тов. Вы так­же об­на­ру­жи­те, что зна­чи­тель­ная часть со­об­ще­ст­ва CakePHP раз­ме­ща­ет в нем свои от­кры­тые мо­ду­ли и при­ло­жения для CakePHP.

В Github сто­ит по­гля­деть офи­ци­аль­ные ре­по­зи­то­рии CakePHP, вы­хо­дя­щие за рам­ки са­мо­го про­ек­та. Ищи­те их на http://github.com/cakephp: они пре­достав­ля­ют ис­точники ин­фор­ма­ции для мно­же­ст­ва баз дан­ных, сред­ст­ва генера­ции API, ути­ли­ты для от­лад­ки и мно­гое дру­гое.

Дру­гой ор­ганизо­ван­ный и под­дер­жи­вае­мый со­об­ще­ст­вом ре­сурс – CakePackages (http://cakepackages.com), ко­то­рый ин­дек­си­ру­ет сай­ты ти­па Github в по­ис­ках ко­да и мо­ду­лей рас­ши­рения CakePHP и пре­достав­ля­ет по­ис­ко­вый ин­тер­фейс, че­рез ко­то­рый мож­но най­ти ис­ко­мое. Он по­зво­ля­ет ис­кать по ти­пу ко­да – ком­понент, ха­рак­те­ри­сти­ка и т. д.; но са­мая удоб­ная воз­мож­ность – по­иск по сво­бод­но­му ко­ду. По­про­буй­те ее в сво­ем сле­дую­щем про­ек­те – у вас в рас­по­ря­жении мил­лио­ны строк добротного го­то­во­го ко­да.

При по­ис­ке по сво­бод­но­му ко­ду опять же не за­будь­те за­гля­нуть в «пе­кар­ню» CakePHP: там есть безд­на ста­тей от раз­ра­бот­чи­ков, и это на­стоя­щая зо­ло­тая жи­ла с при­ме­ра­ми ко­да, го­то­вы­ми мо­ду­ля­ми и при­ло­жения­ми.

Где еще про­сить о по­мо­щи

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

От­крой­те че­рез web-ин­тер­фейс IRC сайт http://webchat.freenode.net и зай­ди­те в ка­нал #cakephp. Ес­ли вам хо­ро­шо зна­ком IRC, от­крой­те в сво­ем лю­би­мом IRC-кли­ен­те irc://irc.freenode.net/cakephp.

По­следний ре­сурс, о ко­то­ром я рас­ска­жу – груп­па Google. Эта груп­па бы­ла соз­да­на в са­мом на­ча­ле про­ек­та, и с го­дами в ней на­ко­пи­лось мно­же­ст­во во­про­сов от поль­зо­ва­те­лей, об­су­ж­дений и ре­шений про­блем. Сей­час в ней бо­лее 15 000 че­ло­век, и их чис­ло еже­днев­но про­дол­жа­ет рас­ти. Под­пи­сать­ся на груп­пы или сле­дить за но­вы­ми со­об­щения­ми мож­но че­рез web-ин­тер­фейс по ад­ре­су http://groups.google.com/group/cake-php.

По груп­пам мож­но ис­кать, ими удоб­но поль­зо­вать­ся. Пре­ж­де чем за­да­вать свой во­прос, сто­ит за­гля­нуть в ис­то­рию и уз­нать, не за­да­вал ли кто-то тот же са­мый или по­хо­жий во­прос пре­ж­де. Это не толь­ко по­зво­лит из­бе­жать дуб­ли­ро­вания, но и уско­рит по­лу­чение от­ве­та!

По­следние кро­хи

Как вы, на­де­юсь, по­ня­ли из этой ста­тьи, со­об­ще­ст­во CakePHP – по­сто­ян­но рас­ту­щее объ­е­динение ум­ных и щед­рых лю­дей со все­го ми­ра. В до­полнение к нему, Cake Software Foundation обеспечивает небывалое изобилие средств и ин­ст­ру­мен­тов, что­бы вы мог­ли де­лить­ся знания­ми и по­лу­чать их от дру­гих. По­это­му, неза­ви­си­мо от пред­по­чи­тае­мо­го ва­ми ме­то­да по­ис­ка под­держ­ки, вы най­де­те ог­ром­ное ко­ли­че­­ст­во сай­тов и ме­ханиз­мов, ко­то­рые на­ве­дут вас на вер­ный путь.

Мне очень нра­ви­лось пи­сать эту се­рию ста­тей о CakePHP для Linux Format, и, на­де­юсь, вам нра­ви­лось их чи­тать. Я на­де­юсь, что мно­гим из вас уда­ст­ся соз­дать по­тря­саю­щие про­грам­мы с по­мо­щью CakePHP и по­де­лить­ся ими со всем ми­ром! Как всегда, ес­ли у вас есть во­про­сы или про­бле­мы, не стес­няй­тесь и свя­жи­тесь со мной или с ре­дак­ци­ей Linux Format.

Ав­то­генераци­я API

Нет досту­па в Ин­тернет? Офи­ци­аль­ный API CakePHP на са­мом де­ле сгенери­ро­ван ав­то­ма­ти­че­­ски из ис­ход­ных ко­дов CakePHP. Это оз­на­ча­ет, что вся поучитель­ная ин­фор­ма­ция, ко­то­рую вы ви­ди­те на сай­те – ре­зуль­тат чтения и раз­бо­ра ком­мен­та­ри­ев в PHP-фай­лах яд­ра CakePHP. Ес­ли вы на чем-то спо­ткну­лись, за­гляните в та­ин­ст­вен­ную пап­ку cake ва­ше­го при­ло­жения и от­крой­те фай­лы – вы уди­ви­тесь, как чист и тща­тель­но про­ком­мен­ти­ро­ван весь этот код.

Ценней­ший наш ре­сурс

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

Будь­те об­щи­тель­ны

Ста­тья о ре­сур­сах по CakePHP бу­дет да­ле­ко не пол­ной, ес­ли не упо­мя­нуть страницу в Twitter. До­бавь­те в дру­зья @cakephp, и вы смо­же­те уз­нать об офи­ци­аль­ных ре­ли­зах, по­смот­реть но­вые про­ек­ты и по­лу­чить ин­фор­ма­цию о том, что про­ис­хо­дит внут­ри со­об­ще­ст­ва. Это так­же еще один пре­крас­ный спо­соб по­лу­чить во­про­сы, на ко­то­рые у вас, воз­мож­но, уже есть от­ве­ты. Со­об­ще­ст­во, сло­жив­шее­ся во­круг CakePHP, очень дру­же­люб­но и от­кры­то, и вы об­на­ру­жи­те, что об­щение с ак­ка­ун­том @cakephp в Twitter и с дру­ги­ми чле­на­ми со­об­ще­ст­ва с по­мо­щью тэга #CakePHP мо­жет дать уди­ви­тель­ные ре­зуль­та­ты. По су­ти, час­то это да­же бы­ст­рее, чем ждать от­ве­та на ваш во­прос от дру­гих средств под­держ­ки.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих