Руководство разработчика сайта




Скачать 99.85 Kb.
НазваниеРуководство разработчика сайта
Дата конвертации31.05.2013
Размер99.85 Kb.
ТипРуководство

Creative atmosphere corporation

Руководство разработчика сайта

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



Anton Danilchenko

31.08.2008




Оглавление


Начало работы в команде 3

1.Присоединение к проекту 4

2.Получение проекта 5

3.Настаиваем проект под себя 6

4.Первый запуск 7

Общие правила для всех разработчиков 8

1.Устройство блоков сайта 9

Ограничения на вводимые пользователем данные 10

Руководство для дизайнера и верстальщика 11

1.Правила создания блоков 12

Руководство разработчика модулей 13

1.Минимум для начала 14

Типы исключений 15

Сообщения об ошибках 16

Перезагрузка страницы или редирект 17

Получение объекта для работы с базой данных 18

5.Составные компоненты ядра 19

ProDb – объект для работы с базой данных 20

6.Модули для блоков сайта 21

7.Дополнительные плагины Smarty 22

Плагин i18n – перевод фрагмента текста на выбранный язык 23



Начало работы в команде

1.Присоединение к проекту


Для начала зайдите на сайт http://www.assembla.com/spaces/caKernel и зарегистрируйтесь. Затем присоединитесь к нашему основному проекту. Вам станет доступной возможность как получать файлы проекта, так и отправлять ваши изменения на наш сервер разработки, чтобы видеть производимые вами изменения. Вы так же можете присоединиться к нашим дополнительным проектам, таким как разработка CMS и некоторым другим.

Настройте себе Jabber клиент для общения с командой в реальном времени. Я пользуюсь QIP Infinum для общения. Вы можете выбрать любой другой подходящий Вам клиент Jabber клиент. Меня звать Антон Данильченко. Вы всегда можете меня найти в Jabber и задать мне вопрос. Так же вы можете писать мне письма на емейл php6developer@ya.ru и обращаться к нашим разработчикам.

2.Получение проекта


Чтобы получить проект, следует выполнить несколько простых действий:

  • настроить свой локальный сервер Apache 2.x.x + PHP 5.2.x + MySQL 5.0.x. Считаем, что вы умеете это делать (информации по этому поводу в Интернете полно);

  • в PHP 5 следует установить дополнительные расширения (extension). Это можно выполнить при установке PHP, либо вручную отредактировать файл php.ini. Вам потребуются следующие расширения для PHP: php_gd2, php_mbstring, php_mysql, php_mysqli, php_pdo, php_pdo_mysql;

  • создайте локальную базу данных. Назовите ее cms. Выполните SQL запрос, расположенный в файле doc/database/cms_data.sql. У вас должны создаться таблицы базы данных и заполниться первоначальными тестовыми данными. Ваш MySQL сервер должен быть настроен для работы с базой данных типа InnoDB и кодировкой UTF-8;

  • скачайте и установите программу Tortoice SVN. Перезагрузите компьютер;

  • создайте папку для основного проекта под названием project. Щелкните на папке правой кнопкой мышки, выберите пункт Checkout…. В открывшемся окне введите адрес нашего проекта http://svn.assembla.com/svn/caKernel, а так же укажите ваш логин и пароль, указанный при регистрации на assembla.com;

  • создайте папку для дополнительного проекта под названием dev.cms и расположите ее в директории application основного проекта (именно в этой папке расположены все дополнительные проекты). Щелкните на папке dev.cms правой кнопкой мышки, выберите пункт Checkout…. В открывшемся окне введите адрес нашего проекта http://svn.assembla.com/svn/caCMS, а так же укажите ваш логин и пароль, указанный при регистрации на assembla.com. Аналогичную операцию следует выполнить для добавления любого другого дополнительного проекта;

  • создайте запись хоста для локального веб сервера. В файле C:\Windows\System32\drivers\etc\hosts следует добавить следующую строку после уже существующих строк: 127.0.0.1 dev.cms. Обратите внимание, что в Windows Vista требуется этот файл сохранить на рабочем столе, а затем скопировать с заменой в указанную папку (этого требует система безопасности Windows Vista);



ServerAdmin webmaster@dev.cms
DocumentRoot "D:/Projects/open_project/application/dev.cms/www/public"
ServerName dev.cms
ServerAlias www.dev.cms
ErrorLog "logs/dev.cms.txt"
CustomLog "logs/dev.cms-access.txt" common


настройте виртуальный хост dev.cms, чтобы он указывал на директорию application/dev.cms/www/public. Для этого следует добавить следующий блок текста в файле Apache2.2/conf/extra/httpd-vhosts.conf:


3.Настаиваем проект под себя


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


DATABASE:
default:
dbtype: mysql
host: localhost
username: cms
password: 123321
dbname: cms
application:
dbtype: mysql
host: localhost
username: cms
password: 123321
dbname: cms


application/dev.cms/www/config/site.conf. Изменяем настройки соединения с базой данных. У вас должна быть настроен сервер MySQL, и здесь следует указать настройки для соединения с вашим сервером. Настройки могут быть такими (хотя Вы имеете право их изменить):


4.Первый запуск


Запускаем проект в веб браузере, набирая адрес вашего проекта. В нашем случае это http://dev.cms. Вы должны увидеть веб страницу с формой авторизации. Если Вы видите пустое окно или сообщение об ошибке – то что-то не так. Открываем файл по адресу dev.cms.err. В этом файле должна быть написана ошибка, из-за которой не удалось запустить проект в браузере. Попробуйте самостоятельно разобраться и решить проблему, либо обратитесь к более опытным участникам проекта, чтобы получить совет по устранению данной ситуации. Скорее всего, Вы неправильно настроили файлы конфигурации основного или дополнительного проекта.

Общие правила для всех разработчиков

  1. Устройство блоков сайта


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

  • не обращая внимания на внешние факторы. Например, выводит 5 последних новостей;

  • обращая внимание на внешние факторы, такие как расположение на определенной странице или наличие данных в URL адресе или в POST. Пример 1: вывести 10 сообщений форума, обращая внимание на номер текущей страницы, который передается через POST. Пример 2: вывести список заголовков страниц, являющихся дочерними по отношению к текущей (меню сайта);

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

Ограничения на вводимые пользователем данные


Пользователь может вводить только данные, отвечающие заданным требованиям. Например, логин должен состоять только из английских букв и иметь длину от 2 до 15 символов. Аналогично этому примеру стоит установить ограничения абсолютно на все приходящие от пользователя данные из HTML формы. Все данные от пользователя приходят через POST. Эти ограничения носят название «фильтрация входных данных».

Контролировать данные, вводимые пользователем нужно с двух сторон – в веб браузере через JavaScript, а так же в модуле который обрабатывает данный блок на стороне сервера. Чтобы иметь одно место для хранения заданных ограничений, используется файл конфигурации блока. Этот файл имеет имя, совпадающее с именем файла блока, но имеющий расширение conf, например user_register.conf. Этот файл конфигурации расположен в директории APPLICATION_PATH/config/block.

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

Метод __construct( $aConfig, $aPostVars ) имеет да параметра. Первый – содержит конфигурацию блока в виде ассоциативного массива. Второй – переменные POST, направленные именно данному блоку.

Для получения конфигурации внутри шаблона используется обращение к переменной Smarty {$block.config.VAR_NAME}, где VAR_NAME – это имя запрошенного параметра из файла конфигурации блока. Например, чтобы получить ограничения для логина пользователя следует вызвать такую строку: {$block.config.filter.login}.

В файле конфигурации блока должна присутствовать секция с именем filter, в которой должны указываться фильтруемые данные в виде login: preg( ‘[a-z0-9]{3,15}’ ). Это один фильтр, который указывает допустимо значение для переменной login, которая приходит из HTML формы пользователя. Как видим, задается имя переменной, затем указывается тип фильтра (в данном случае это тип фильтра, представляющий собой регулярное выражение).

В данный момент допустимы следующие типы фильтров:

  • email. Проверяет на правильность введенный e-mail адрес;

  • url. Проверяет на правильность введенный URL адрес сайта;

  • ip. Проверяет на допустимость ввода IP адрес;

  • int( $iMin, $iMax ). Проверяет, чтобы было задано целое число. Можно задать минимальное и максимальное значение числа (можно не задавать, чтобы снять ограничения);

  • float( $iMin, $iMax ). Проверяет, чтобы было задано дробное число с точкой или запятой, разделяющей целую и дробную часть. Можно задать минимальное и максимальное значение числа (можно не задавать, чтобы снять ограничения);

  • string( $iMin, $iMax ). Проверят, чтоб была задана строка текста. Можно задать минимальную и максимальную длину строки в символах (можно не задавать, чтобы снять ограничения);

  • preg( $sExpression ). Проверяет, чтобы было выполнено соответствие указанному регулярному выражению. Обязательно задается регулярное выражение в стиле PREG.

Руководство для дизайнера и верстальщика

  1. Правила создания блоков

Руководство разработчика модулей

  1. Минимум для начала

Типы исключений


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

В ядре системы имеется следующая иерархия исключений:

  • KernelException

    • PageException

      • BlockException

        • ModuleException

    • ResponseException

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

      • ReloadException: принудительная перезагрузка текущей страницы. Передавать параметры не требуется. Выполняет завершение выполнения сценария с места вызова;

      • NotFoundException: указывает браузеру клиента что страница не найдена. Выполняет завершение выполнения сценария с места вызова;

      • AccessDenienException: указывает браузеру клиента что ему запрещен доступ к данной странице. Выполняет завершение выполнения сценария с места вызова;

    • AclException

    • ConfigException

    • CreatorException

    • FacadeException

    • RequestException

    • UserException

Сообщения об ошибках


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

Для добавления сообщения об ошибке следует вызвать команду $this->_addMessage( $mMessage, $iErrType ). Первый параметр – текст сообщения, которое будет записано в протокол, или объект отловленного исключения. Второй параметр – тип ошибки, который может принимать значения: константа self::ERR_SYSTEM (критическая ошибка) или self::ERR_ACCESS (ошибка ввода пользователя, установлено по умолчанию). Если в первом параметре будет передан объект исключения, то будет автоматически найдено место возникновения исключения и взят текст сообщения об ошибке.

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

Перезагрузка страницы или редирект


Для того, чтобы произвести перезагрузку текущей страницы следует выкинуть исключение следующим образом throw new ReloadException().

Для того, чтобы произвести переход на другую страницу следует выкинуть исключение следующим образом throw new RedirectException( $sUrlAdress ). Если адрес задан без http:// то указанный адрес будет подставлен после адреса текущего сайта. Например, если вы находитесь на сайте http://site.com, и затем выкинули исключение с требованием перейти на адрес новостей throw new RedirectException(‘news’), тогда пользователь будет перенаправлен по адресу http://site.com/news.

Другие типы исключений описаны в разделе «Типы исключений».

Получение объекта для работы с базой данных


Для получения объекта базы данных, следует вызвать метод $this->_getDatabaseObj( $sSchemaName ). Этот вывоз возвращает объект proDb, который уже соединен с базой данных и подготовлен для работы. Если передать параметр и указать правильное имя схемы базы данных (имя схемы, которое задано в конфигурационном файле site.conf в секции DATABASE), то будет использовано соединение по указанной схеме. Если имя схемы не передано, то используется стандартная схема с именем default. Имя схемы нужно передавать лишь в том случае, когда вы работаете сразу с несколькими базами данных, которые в свою очередь могут быть расположенными на разных серверах. Если проект работает всего с одной базой данных (как это бывает чаще всего), то следует вызывать метод без параметров таким образом: $this->_getDatabaseObj().

Объект proDb является нашей собственной разработкой, и обладает легким и понятным интерфейсом. Подробнее он рассмотрен в разделе «ProDb – объект для работы с базой данных».

5.Составные компоненты ядра

ProDb – объект для работы с базой данных

6.Модули для блоков сайта

7.Дополнительные плагины Smarty

Плагин i18n – перевод фрагмента текста на выбранный язык



Похожие:

Руководство разработчика сайта iconРуководство разработчика 
Введение  
Руководство разработчика сайта iconРуководство разработчика 
Введение  
Руководство разработчика сайта iconРуководство разработчика 
Введение в Oracle Forms   
Руководство разработчика сайта iconРуководство разработчика
Данное руководство написано для людей, которые желают быстро и качественно создавать информационные системы на базе Веб и контент-зависимые...
Руководство разработчика сайта icon1. Руководство по использованию панели 
Обычно панель администрирования сайта находится в подкаталоге admin вашего сайта: 
Руководство разработчика сайта iconРуководство разработчика 
Интернете, могут изменяться без уведомления. Риск, связанный с использованием таких 
Руководство разработчика сайта iconРуководство разработчика   
Возможность  использование  . htaccess  файлов   в  httpd conf  Apache  должна  быть 
Руководство разработчика сайта iconРуководство пользователя Free Pascal версии Версия документа Март 2010 Michael Van Canneyt, Florian Klampfl
Для этих целей смотрите Справочное Руководство. Для просмотра описания возможностей и внутренней организации компилятора используйте...
Руководство разработчика сайта iconРуководство разработчика
Она будет полезна разработчикам, желающим добавить возможности исполнения скриптовых программ в свои проекты
Руководство разработчика сайта iconРуководство разработчика
Яндексу (а также указанному им правообладателю) принадлежат исключительные права на все результаты интеллектуальной деятельности...
Разместите кнопку на своём сайте:
kak.znate.ru


База данных защищена авторским правом ©kak.znate.ru 2012
обратиться к администрации
KakZnate
Главная страница