Вопрос по организации системы

WoLFiks

Не курю...
Вопрос по организации системы

Вопрос заключаеться в организации структуры физических файлов. На данный момент использую общепринятый подход. Один файл в коррне, который в зависимости от url подключает тот или иной модуль. Файлы каждого из модулей распологаю в "своем" каталоге каталога "модули". Вот тут начинаються вопросы.
1. Это как логически разделить по файлам функции внутри папки модуля? Т.е. в каких файлах (имена и логика) какие функции писать, чтобы было просто найти часть, которуюю желаешь модернизировать и т.д...
2. Как именовать функции, чтобы не путаться в дальнейшем.
3. Все, все, все, что с этим связано.

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

Я, конечно, понимаю, что это вроде как вопрос самого начального уровня, но вопрос остаеться вопросом.! И только сейчас задумался о этом вопросе всерьез...

Расскажите, как Вы распределяете код, как организуете систему каталогов и файлов?

Если есть хорошие, Именно хорошие статьи на эту тему, то буду очень благодарен...

Заранее благодарен
 

HraKK

Мудак
Команда форума
Это далеко не вопрос начального уровня.

И тема может сьехать в холивар, так как в основном это дело вкуса.

В общем выроботай удобный для тебя и для других стандарт размещения и названий файлов, что внутри(обычно 1 файл - 1 класс), а как же станданты названий классов, переменных функций и четко следуйте этого стандарта на протяжении проета.
 
Или почитай о существующих стандартах, и выбери какой-то из них
То же касается структуры. Можно посмотреть существующие фреймворки, движки, и не обязательно php ;). Опыт приходит со временем, а с опытом приходит все остальное ^^
 

HraKK

Мудак
Команда форума
Верно, только не смотри на joomla bitrix etc :D
 

WoLFiks

Не курю...
Вопрос уже более конкретезируеться:
1. почитай о существующих стандартах.. ?
2. При процедурном программировании как ЛУЧШЕ разделить по файлам функции внутри модуля?
Соответственно далее это может послужить поводом, а следовательно и структурой к переводу процедурного подхода к ООП. (1 файл - 1 класс)
 
если функции настолько тесно связаны что жить друг без друга не могут, какой смысл раделять их по файлам?
google.com/search?q=php+coding+standards
 

WoLFiks

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

С.

Продвинутый новичок
Несколько сотен строк для одного модуля-файла это совсем не много. Если у тебя больше, то ты что-то делаешь не так.
 

iamFake

Mind Of Liberty
мне, например, проще в сложных модулях также вести модульность...

каждый модуль соответственно в своей папке, и если модуль сложный(объемный), то он также делиться на подмодули и храняться они в подпапке _exts в папке модуля...
 

Ярослав

Новичок
Мне очень понравилась структура в Egroupware.
Там например так
Проэкт
модуль 1
inc/
class.ui_myclass.inc.php (інтерфейсный клас - работает только с интерфейсом)
class.bo_myclass.inc.php (клас логики - тут все что связано с логикой более сложной чем вывод контента)
class.so_myclass.inc.php (клас для доступа к БД)
templates/
шаблоны
модуль 2
модуль 3
phpgwapi/
тут хранятся общие классы, кот. часто используются в модулях
 

Alexandre

PHPПенсионер
1 module = 1 class + 1 template
1 class = 1 file

все дополнительные классы хранятся либо в папке ядра,
либо папке ext
 

HraKK

Мудак
Команда форума
Как я и предпологал - вся тема разрастается в холивар и бесмысленые споры у кого длинее и круче.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
HraKK
да че, war как-раз пока и нет - наоборот, интересно почитать, кто как делает - например, у Alexandrе структура интересная
 

HraKK

Мудак
Команда форума
Я исполбзую такую в маленких проектах, в больших 1 файла не хватает.
 

Dreammaker

***=Ф=***
Продолжим holy ) может и не war, но обсуждение.

Мне нравится подход в CodeIgniter`e

Есть ядро, есть приложение.

Есть библиотеки стандартные в system/libraries, а есть пользовательские лежащее в папке application/libraries
если название совпадает со стандартной библиоеткой (классом), то пользовательская подключается вместо стандартной.

Если имя библиотеки имеет префикс (можно менять) my_ , то такая библиотека расширяет системную.

Ну и в папке application отдельные папки

controllers
models
views

Понятно для чего :)

Один файл - один класс, имя файла = ClassName.php Очень легко подключать сторонние библиотеки в виде классов (в большинстве случаев, достаточно залить в папку /system/application/libraries), иногда ребует минимальной доработки, если библиотека требует вызова какого-то функционала реализованного в CodeIgniter`e . Например, подключить механизм сессий.
 

WP

^_^
Меня не парит файл 100-200кб совершенно, разделяю я лишь по связанному функционалу. Например один файл API шаблонизатора, а другой компилятор. А куча файлов имхо снижает удобство.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Автор оригинала: HraKK
Я исполбзую такую в маленких проектах, в больших 1 файла не хватает.
Прости, для чего именно не хватает одного файла? Не подкол - интересно.
 

HraKK

Мудак
Команда форума
grigori
Не понятно что можно все втулить в 1 файл, мне лично удобнее когда большие модуля, разделять сущьности. Например (сферичекий конь в вакууме) берем любой модуль, у меня ORM модель, поэтому у меня в главный файл модуля агрегируется отдельный класс для работы с базой данных в котором реализованны сложные запросы к базе данных которые выходят за уровень ORM.
Это первый случай - расширением модели ORM.

Второй - часто модули работают не с 1 таблицей, тогда ( кроме исключений ) для каждой таблицы будет отделный файл.
Например публикации как минимум 2 файлами Category и Articles каждый из которых может агрегировать еще по 1 файлу.
 
Сверху