Пуля — дура. Пых — молодец.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 24 Май, 2012, 04:24:00

Страниц: [1]
Печать
Автор Тема: строение файловой системы для не большого проекта  (Прочитано 495 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Trieg    ↓ 
15 Январь, 2010, 07:46:52
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 6
Сообщений: 41
Сила слова: 14.63

условные обозначения:
[badNameList] - в данный момент index, modul, admin, captha, ajax, user, page
[all] - любое строение и именование фалов\директорий
 
{ext} - расширение файлов соответствующие определеннуму типу (к примеру видео, картинки, флеш)
{name_1}   - больше 3 меньше 32 символов, только английские буквы нижнего регистра, знак подчеркиванья.
{name_2} - тоже самое что и {name_1} но можно использовать точку.
{name_3} - тоже самое что и {name_1} но можно использовать верхний регистр.
{controller} - контроллер *ограничения как у {name_2}
{modul} - модуль контроллера *ограничения как у {name_2}
{plugin_name}   - тоже самое что и {name_2}, нельзя использовать в качестве имени [badNameList]
{theme_name} - имя темы *ограничения как у {name_1}
{lang_name} - имя языка *ограничения как у {name_1}
{lang_fname} - либо {controller}.php либо {controller} . {modul}.php, исключение (core.php ***)
{class_name}    - имя класса *ограничения как у {name_3}
{namespace}     - пространство имен (с версии php5.3 можно юзать это счастье)
{plugin_name}   - имя плагина *ограничения как у {name_1}
{hook_name} - больше 4 меньше 64 символов, только английские буквы нижнего регистра и точка.
{user_id} - уникальный id пользователя
{temp_name}     - временное имя файла *ограничения как у {name_3}.
 

/themes/{theme_name}/core.{controller}.{modul}.tpl - файл шаблона (то что его вызвало является частью ядра)
/themes/{theme_name}/theme.{name_2}.tpl - не обязательный файл шаблона, подключается в других шаблонных файлах
/themes/{theme_name}/{plugin_name}.{controller}.{modul}.tpl - файл шаблона пренадлежащий плагину с именем {plugin_name}
/themes/{theme_name}/style/{name_2}.css - всякие css файлы
/themes/{theme_name}/javascript/{name_2}.js - js файлы
/themes/{theme_name}/language/{name_1}.php - доступные языки
/themes/{theme_name}/image/[all] - картинки, по идее сюда можно положить что угодно
/themes/{theme_name}/plugin/{name_2}.php - специфическая логика для данного шаблона (фишки, рюшки, расширение для компилятора шаблона)
/themes/{theme_name}/flesh/{name_2}.{ext} - флешки
/themes/{theme_name}/{theme_name}.php - информация о авторе и секция для действий инсталяции и деинсталяции (яз что там понадобится, так на всякий случай)
 
/system/language/{lange_name}/{lang_fname}                      - файл с куском локализации
/system/image/[all] - картинки что использует ядро
/system/javascript/[all] - js скрипты для ядра
/system/engine/class/{class_name}.php                           - файл с php классом
/system/engine/class/{namespace}/{class_name}.php               - файл с php классом что находится в {namespace}
/system/engine/controller/{name_1}.php - контроллер
/system/engine/moduls/{controller}/{name_1}.php - модуль контроллера {controller}
 
/system/engine/compatibility.php - отвечает за проверку на совместимость
/system/engine/function.admin.php - функции которые подключаются только для контроллера admin
/system/engine/function.php - куча функций, используется везде где тока можно
 
/system/config.php - типичный конфиг файл что нужно отредактировать перед работой с системой
 
/plugins/{plugin_name}/{plugin_name}.php - файл с информацией для инсталяции и деинсталяции компонентов плагина (создание нужных таблиц, получение нужной инфы при установке, дефолтные настройки для acl)
/plugins/{plugin_name}/hook.{hook_name}.php                   - файл плагина что используется системой как один из хуков
/plugins/{plugin_name}/modul.{modul}.php                   - файл плагина что используется системой как модуль контроллера
/plugins/{plugin_name}/language/{lang_name}.php - файл локализации
/plugins/{plugin_name}/language/{name_1}.php - файл локализации, вызывается ручками из любого места текущего плагина
/plugins/{plugin_name}/class/{plugin_name}_{class_name}.php     - Класс доступен только в том случае если вызов произошел из файла что находится в нутри директории {plugin_name}
/plugins/{plugin_name}/template/{plugin_name}.{controller}.{modul}.tpl - подключается в случае отсутствия файла с таким же именем в нутри активной темы.
/plugins/{plugin_name}/template/[all] - все что надо для шаблона (картинки, скрипты, стили)
 

/datas/cache - хранилище для файлового кеш драйвера и для компилятора шаблонов (все свалено без поддиректорий (имена файлов не md5, пример - config.core.php и tpl.innocence.core_error404_tpl.php)
/datas/user/{user_id}/ - тут хранятся все файлы пользователя с {user_id} (авка, фотка, картинки в подписи и все что он залил в личный архив или на форум)
/datas/html/{name_1}.html - статистическая страница
/datas/temp/{temp_name} - временный файл созданный ядром (как правило надо тока при обновлении какого либо компонента или иногда служит индикатором лока)
/datas/store/{name_1}.{ext} - файлы которые автоматически обновляются (к примеру база geoIp и browscap.ini)
/datas/system/{name_1}.php - файлы что требуется подключить до инициализации системы (пока ет некоторые конфиги)
 

Пока я думаю внести следуйщие изменения:
1 - убрать файлы что лежат в корне папки /system/engine/, создать папку /system/engine/helper и хранить файлы с набором функций, именовать так же как {lang_fname}, подрубать их автоматом, по аналогу с этим сделать папку в плагине.
2 - убрать папку /system/javascript/ и /system/image/, в замену создать /system/хз что/ и там хранить подобную дребедень (в общем все что отдается клиенту)
3 - все что в /system/engine/  выкинуть в /system/ а прошлую диру делитнуть
 
Вопросы на которые хочется получить ответы:
1 - Каждая тема должна содержать дизайн для админ панели, диз админки не часто меняют.. может как то по другому организовать?
2 - Стоит ли максимально ужесточить правила для именования директорий темы и плагина?
3 - Все имена дир и файлов в нижнем регистре кроме тех что system/engine/class стоит ли так делать? (честно скажу так сделал тока ради красоты и сам понимаю Возможные трудности но ведь их не возникнет если следовать правилам =) )
4 - Можно ли злоупотреблять (ну ет громко сказано, не более 120 вызовов и все к частям системы что не измены) функцией file_exists для автоматизации подключения классов, наборов функций, контроллера, модуля, хуков, ланг файлов, шаблонов (по идее после первого вызова результат функции кешируется, и обращение к файловой системе на второй раз не идет.. я правильно думаю?)
5 - Что по вашему мнению необходимо изменить\удалить\добавить?
 
Чтоб не создавать еще один топик сразу спрошу про utf8:
1 - Какие подводные камни при использовании кодировки utf8?
2 - Какие ограничения\правила в использовании регекспов и строковых функцый с utf8?
3 - Какие стандартные функции могут начать чудить заметив utf8?
4 - Сколько % проблем покроет mbstring.func_overload и выставление нужной локали при учете того что регекспы не используются (это не так, но давайте представим)
5 - mbstring.func_overload > Changeable = PHP_INI_SYSTEM | PHP_INI_PERDIR, PHP_INI_PERDIR значит что я магу менять значение юзая .htaccess?
6 - Какие дополнительные настройки\действия вы можете порекомендовать при переходе на utf8?
7 - Существует ли сумермегакласс который решит львиную часть возможных проблем?
8 - Есть ли в природе список рекомендаций от разработчиков самого интерпритатора или его ядра?
 

Сейчас все крутится на cp1251/PHP5.3.1/Apache2.2/дорога мне в ад но os Windows XP, объем php кода более 17к строк, весь код знаю идеально с utf-8 дела не имел(тока по мелочи), бд набита ненужной тестовой инфой, не каких парсеров пока не использую (исключение компилятор шаблонов, но если я прально понимаю то те регекспы что там не пострадают). Интересует только личный опыт, или актуальная информация из надежного источника. + ктонить может адекватно оценить время которое потребуется на переход учитывая предоставленную информацию? У кого есть полезный и проверенный код которым не жалко поделится приму в дар =).
 
PS: в первую очередь интересуют ответы по теме а на utf-8 решил перейти так как многие сервисы юзают именно это кодировку так же заколебало чудить с аяксом ну и само собой этож блять теперь модно.. запарился набирать так что сори за ошибки и опечатки, я не олень =))
Записан
md5    ↓ 
15 Январь, 2010, 09:08:46 , спустя 1 час 21 минуту 54 секунды
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10494
Сила слова: 1.19

ох, ебать :))
сложно оценить по времени - 17к строк кода
т.к. не везде же надо будет только кодировку поменять,с тем же аяксом - код переписать и все иконвы поубирать
 
но не в ручную че все это конвертить..
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
Абырвалг    ↓ 
15 Январь, 2010, 12:28:14 , спустя 3 часа 19 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6094
Сила слова: 1.31

1 - Какие подводные камни при использовании кодировки utf8?
регулярки в MySQL некорректно работают
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
CTAPbIu_MABP    ↓ 
15 Январь, 2010, 04:08:16 , спустя 3 часа 40 минут 2 секунды
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

Абырвалг, ага ты их каждый день используешь
Спустя 40 секунд добавил
а линукс хуевый тем что из консоли нельзя выполнить команду 2Гб длиной
Записан

java.lang.OutOfMemoryError
artoodetoo    ↓ 
15 Январь, 2010, 06:25:59 , спустя 2 часа 17 минут 43 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3804
Сила слова: 3.26

про легенду:
так хорошо начал, а почему-то name* обозначения выбрал неговорящие. почему бы не назвать
{name}   - больше 3 меньше 32 символов, только английские буквы нижнего регистра, знак подчеркиванья.
{name_dot} - тоже самое что и {name} но можно использовать точку.
{Name} или {name_ci} - тоже самое что и {name} но можно использовать верхний регистр.
 
подводные камни utf-8 и кириллицы:
- не забывать mb_internal_encoding() :)
- в mysql пишем "utf8" без дефиса :)
- utf-8 может содержать символы до 4 байт длинной
- я отказался от оверлоадинга, чтобы четко видеть где у меня строка считается набором байтов, а где мультибайтной цепочкой.
- кажется в preg_* функциях, даже при указании модификатора "u", неадекватно отрабатываются \w и \W для нелатиницы. + модификатор "i"… хотя может быть это уже исправлено. давно это было…
- файлы и папки никогда не именую кириллицей. даже в Windows. где-нибудь да вспывет косяк
 

Записан
Страниц: [1]
Печать
 

Перейти в: