Телефон: +7 (495) 649-0526

Стандарты программирования для Web приложений

Общая идеи и цели к порталу:

  • Создание довольно мощного инструмента для быстрого создания качественных бизнес сайтов;
  • Открытый код с понятными комментариями в каждой строчки, чтобы код читался на одном дыхании;
  • Сделать портал все сторонним развивающим;

Основные человеческие истины которых требуется придерживаться

  • Не твори зла;

Структура путей в портале

  • /examples/ - экспериментальные примеры;
  • /old/ - старые исходники;
  • /prj/ - примеры проектов;

Структура путей SD Core, основной каталог sd

  • /images/ - каталоге хранится графика для ядра;
    • /admin/ - графика для администраторского кабинета;
    • /bk/ - графика для задних фонов;
    • /buttons/ - различные кнопки;
    • /control/ - элементы управления;
    • /ext/ - обозначения расширений файлов;
    • /form/ - элементы управления для форм;
    • /icons/ - иконки для стандартных модулей;
  • /js/ - JavaScript`ы
  • /php/ - здесь хранятся все общие объекты, которые легко можно использовать в других проектах // все стандартные и общие функции используемые практически во всех проекта;
  • /reports/ - отчеты;
  • /sound/ - звуки;
  • /styles/ - всевозможные стили;

Структура путей проектов, основной каталог sd

  • /base_doc/ - в таком каталоге хранятся все документы для каждого из проектов, каждый проект может иметь свой такой каталог, хранятся там чисто файлы, вручную туда практически ничего не вносится;
  • /help/ - помощь по проекту, если таковая вообще существует;
  • /images/ - изображения;
  • /js/ - специфические скрипты для работы проекта;
  • /php/ - специализированные настройки для каждого модуля/объекта;
  • /reports/ - отчетные / печатные формы;
  • /setup/ - любые специализированные настройки для проекта, внутри файла все параметры описаны;
  • /sound/ - звуки для проекта если таковые имеются;
  • /styles/ - всевозможные стили;
  • index.php - начало любого проекта;
  • index_tpl.php - основной шаблон дизайна для проекта, который натягивается на движок;

Обязательные стандарты

Правила:

  • работа скриптов никак не должна быть связана с дизайном, ибо дизайн у всех разный, но работают все одинаково, тот же клик мыши никогда в на ближайшие 50 лет не отменит
  • Специализированные функции для каждого проекта должны храниться в «/setup/func.inc.php»;
  • Каждый проект должен работать вне зависимости от другого проекта, но все могут использовать глобальные функции и модули находящиеся в корневом каталоге / ядре;
  • Название переменных должны назваться на правильно на английском/техническом (например: room вместо komnata), и нести смысловую нагрузку (например: text вместо t);
  • Запрещено в конечных вариантов функций использовать операторы echo и print. Весь результат должен писаться в одну переменную. Это требуется для поддержания шаблонов;
  • Во всех базах и таблицах использовать кодировку utf8_general_ci / UTF8
  • В HTML тегах не использовать свойство align из-за того что он не корректно работает в IE + отклонен в HTML 5.0

    Приставки и окончания:

    1. Приставка: sd_ все функции начинаются с этой приставки от слова function, исключения только некоторые. Это мера для удобства чтения скриптов в дальнейшем;
    2. Приставка: $_ - все входящие в функцию параметры, должны начинаться с указанной приставки;
    3. Приставка: sd_db_ - содержание обозначает, что функция работает с SQL запросами;
    4. Окончание у файлов: _list - у файлов обозначает, что данный файл отвечает за просмотр данных;
    5. Справочник - список / таблица уникальных данных. Как правило справочник не ссылается на другие таблицы, а только другие ссылаются на этот справочник;
    6. Реестр - список / таблица данных с возможностью повторения одних и тех же значений с разными дополнительными параметрами например, дата. Как правило запись ссылается на другие таблицы/справочники;

    // _____________________________________________________________________________
    function sd_{NAME}()// что делает функция
    // комментарий входных параметров
    {
       return;
    }

    Техническая информация, желательно ее придерживаться:

    1. Располагать информацию таким образом чтобы она смотрелась удобно на PDA (320х240). Реализовано на уровне ядра.
    2. Где это не требуется или есть возможно этого избежать, неупотребление таблицы, либо сокращаться количество колонок;
    3. Дизайн на основе DIV запрещен! Из-за первого пункта;
    4. Придерживаться дизайна светлых тонов;
    5. Минимум графики, большую часть строить на основе HTML и JavaScript. Те же сложные таблицы;
    6. $_SESSION['user'] - все о пользователе в сложном массиве
    7. $_SESSION['rigth'] - все права на на текущий модуль или еще что либо хранятся в этом сложном массиве, вот перечень основных
      • $_SESSION['rigth']['admin'] - true(1) - Имеются права администратора - основные права
      • $_SESSION['rigth']['view'] - true(1) - Разрешено просматривать данные - основные права
      • $_SESSION['rigth']['add'] - true(1) - Разрешено добавлять данные - основные права
      • $_SESSION['rigth']['edit'] - true(1) - Разрешено редактировать данные - основные права
      • $_SESSION['rigth']['erase'] - true(1) - Разрешено удалять данные - основные права
      • $_SESSION['rigth']['config'] - true(1) - Разрешено конфигурировать и настраивать данный модуль. (то есть доступ к админке) - основные права
      • $_SESSION['rigth']['print'] - true(1) - Разрешено формировать печатные ведомости - Права для удобства пользователя - если модуль такое поддерживает
      • $_SESSION['rigth']['export'] - true(1) - Разрешено экспорт данных в другие источники - Права для удобства пользователя - если модуль такое поддерживает
    8. Для работы с базой достаточно вызвать стандартную sd функцию sdf_db_connect()
    9. Если в таблице нет полей surname_ch (фамилия изменившего) и Pu (Признак удаления ), то эта таблица полностью автоматическая и пользователь или администратор не имеют прав ее изменить.
    10. Рекомендуется в начале каждого модуля прописывать переменную $table для основной таблицы, в связи с тем, что название таблицы может поменяться, а в скриптах разбираться довольно затруднительно и занимает много времени.
    11. Все счетчики в системе должны иметь приставку Сounter_
    12. Делать проверки правильности ввода данных как на Java Script так и в PHP.
    13. Сразу делаем проверки на любой тип ввода. в плоть до ограничения количества ввода символов, что существенно сократит вероятность взлома.
    14. Нельзя заводить логины начинающие с «_». Они являются зарегистрированными в системе. Например: _user, _login, _admin и так далее. Данные пользователи считаются системными.

    15. Не позволяет заводить двух одинаковых логинов, но Ивановых Иван Ивановичей может быть хоть сколько;
    16. В самой системе пароли не хранятся, поэтому ничего никому не высылается;
    17. Введена система как автоматической регистрации так и по предварительномук модерированию. Это можно изменить теперь при помощи всего навсего одной галочкой в настройках сайта.

     

    Обозначения в базе данных:

    1. g_ - глобальная таблица, значит к этой таблице может обратися любой проект. От слова global
    2. doc_, ori_ и т.д. - это обозначение к какому проекту относится та или иная таблица. К ней обращается только свой проект.
    3. IDимя_поля, обозначает, что поле не хранит в себе информации, а это ссылка на какую либо таблицу.
    4. В каждой таблице должно существовать поля:
      • ID (int)- Уникальный номер.
      • IDT (timestamp)- Дата и время последнего изменения. Атрибут: ON UPDATE CURRENT_TIMESTAMP. По умолчанию: CURRENT_TIMESTAMP
      • login_active_id (int)- ID Номер пользователя, в главной базе пользователей. От «ID Login change»
      • Login_ch (varchar30)- Логин (Автор, от Login change) последнего изменения записи. Эта фишка применяется для того чтобы знать последнего, кто и когда изменял запись. Также помогает в случае, если по каким либо причинам по ссылке login_active_id, пользователя более не существует.
      • IDProject - ссылка на проекта. Это только для общих таблиц (с приставкой g_)
      • Pu - Признак удаления. Это на тот случай, где физически запись не уничтожается.

    Как должна выглядеть каждая функция:

    // Краткий, но ясный комментарий, что делает функция
    function sd_return_mode()<-f_ все функции начинаются с этой приставки от слова function, для удобства чтения в дальнешем кода скриптов;
    {

    code...// Комментарий

    code...// Комментарий
    return ...// Комментарий, что возвращает функция, если возвращает
    }

    Почему именно такой стиль определен?

    Универсальная работа с каждым модулем:

    1. Любой модуль получает входящий режим работы через переменную mode. Например: ?mode=add. Получить этот параметр просто использовать глобальную функцию sd_return_mode(). Рекомендуется использовать эту единую функцию, чтобы иметь единую безопасность для всех модулей и усиливая ее, автоматически распространялась на все модули;
    2. Такая же функция как предыдущая sd_get('rec_id','int'). Возвращает ID номер записи с которой модулю нужно поработать. Например: ?mode=edit&rec_id=32. Модуль знает, что нужно отредактировать 32 запись.
    3. Команды для модуля:
      • вызов без параметра - режим по умолчанию. (чаще всего список чего либо)
      • new - вызывает форму добавления новой записи - требуются прав right_add или right_admin
      • edit - вызывает форму редактирования записи (доп параметр rec_id) - требуются прав right_edit или right_admin
      • add - добавляет новую запись - - требуются прав right_add или right_admin
      • update - обновляет указанную запись параметром rec_id - требуются прав right_edit или right_admin
      • delete - удаляет записи выделенные checked - требуются прав right_delete или right_admin
      • остальные по функционалу усмотрению.

    Замечания:

    1. Процедур в PHP не существует!
    2. & - приставка для разрешения изменять значения переменной внутри функции
    3. , но лучше использовать
    4. . Проверять это при тестировании

    Перечень большенства функций в общем хранилище функций. Если в начале стоит include_once('/func.inc.php')

    Эти функции вам помогут не изобретать велосипед...

    Название функций Входящие параметры Описание
    sd_return_mode()  

    Возвращает режим в котором должен работать модуль

    sd_get('rec_id','int')  

    Возвращает ID номер записи с которой модуль должен работать

    sd_get($_name) _name - любое значение

    Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_GET

    f_POST($_name) _name - любое значение

    Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_POST

    sd_session($_name) _name - любое значение

    Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_SESSION

    sd_request($_name) _name - любое значение

    Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_REQUEST

    sd_server($_name) _name - любое значение

    Возвращает '' при не некорректном параметре $_name. Правильно декодирует. Заменяет обычный $_SERVER

    sdf_FTS($_number,$_dicimen=2) _number - любое число
    - _dicimen - количество знаков после запятой

    Преобразует число в строку формта 100000.$_dicimen. Отображения чисел с большой точностью. Существенно ускоряет написание кода.

    sdf_goto($_link) _link - ссылка

    Прекращает работу модуля и переходит по указанной ссылке. Очень удобная функция и скоряющая написание кода

    sd_timer_end()  

    Возвращает время генерации страницы. Рекомендуется ставить в конец скрипта

    sd_link($_text,$_link,$_right=false) _text - Название ссылки
    _link - ссылка
    _right - true - разерешно

    На основании прав (_right) формирует ссылку. Очень интересная и полезная функци:
    _text - (_right=true - разрешено переходить по ссылке)
    _text - (_right=false - ссылка видна, но она не работает)

    sd_str_cut($_text,$_count) _text - текст
    _count - кол-во символов для вывода

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

    sdf_email_check($_link) _link - email адрес

    Проверка правильности адреса электронной почты. True - правильный адрес

    sd_site_check($_link) _link - адрес сайта

    Проверка правильности написания ссылки на какой либо сайт. True - правильный сайт

    sdf_email_show($_link) _link - email адрес

    Выводит email адрес с защитой от сканирования спамерами. Настоятельнос рекомендуется использовать данную функцию.

    • В заголовке должны всегда быть кнопки назад - хранит в себе инфу о предыдущей странице, и помощь которая настраивается в настройках;

    Учесть в настройках сайта:

    все настройки хроняться в переменной $config['']

    Переменная Значение По умолчанию Комментарий
    dubl_fio boolean false true - делать проверку на совпадение ФИО
    user_verify boolean false true - включить режим модерирования регистраций новых пользователей. Каждая регистрация будет требовать одобрения администратора

Страница: Стандарты программирования для Web приложений

Раздел: Все индивидуальные страницы