Правильная организация структуры сайта.

Гриша К.

Новичок
Организация файловой структуры сайта?

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

Например, если я попрошу программиста со стороны написать мне раздел "новости":
[1] мне достаточно будет сказать ему названия папок в которых хранятся шаблоны (/templates/), подключаемые файлы (/includes/), файлы админа (/admin/), дать ему набор общих подключаемых файлов (/includes/function.db_con.php, /includes/header.php и т.д.) и шаблонов (/templates/header.tpl и т.д.)
[2] после написания им данного раздела, мне останется скачать необходимыей файлы в нужные папки (по необходимости создать новые) и например добавить в меню ссылку на данный раздел.

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

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

PHP:
//Пример моей файловой структуры:
[+] /admin/ - /* файлы администртора */
 |_ catalog_management.php //управление меню
 |
[+] /includes/ - /* подключаемые файлы */
 |_ header.tpl 
 |_ menu.tpl 
 |_ footer.tpl
 |_ function.db_con.php //функция подключения к БД
 |
[+] /templates/ - /* шаблоны */
 |_ header.tpl
 |_ menu.tpl
 |_ footer.tpl
 |_ catalog.tpl //шаблон каталога. В него также подключаются все выше описанные шаблоны.
 |_ [+] /admin/ - /* шаблоны админа */
 |   |_ catalog_management.tpl //управление меню
 |
 config.php - подключаются общие функции (db_connect.php, и т.д.)
 

zerkms

TDD infected
Команда форума
а вопрос будет?
если тема для обсуждения - то ответ однозначен - однозначного ответа, "да, ты сделал правильно", или "нет - ты очень сильно заблуждаешься"
нет и не будет
 

Гриша К.

Новичок
zerkms, спасибо за ответ.

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

zerkms

TDD infected
Команда форума
Гриша К.
нет, стандартов нет и не будет.
удобство - фактор субъективный и сугубо интимный, так что ответа тоже нет, если тебе удобно - то супер ;)
 

Гриша К.

Новичок
zerkms, спасибо большое за разъяснения.
Читал про организацию СМС - движки (ядра), модули, некоторые исходники смотрел, ну и отсюда сомнения возникли в своей новой структуре.
Вообще приведенная структура для меня удобна и понятна, ну значит буду придерживаться ее.
 

zerkms

TDD infected
Команда форума
(исключительно моё мнение) в программировании учиться на своих ошибках очень полезно. конечно чужой опыт перенимать тоже нужно, однако не слепо взять "как там", а попробовать сделать иначе (если так кажется удобнее) и через некоторый промежуток времени уже аргументированно сказать - "да мой вариант отличный" или "как то криво всё получилось, пожалуй нужно полностью переделать"
 

Гриша К.

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

Solid

Drosera anglica
Гриша К.
к примеру мне нравится реализация framework'a http://www.clawphp.org/, очень приятно разрабатывать веб-приложения при помощи него, хотя бы только из-за того, что на php4 я собственноручно сделал примерно такой же framework... сейчас как раз в claw для меня нет изъянов... может быть только самые небольшие.
Предлагаю эксперементировать, тестировать разные framework'и, залезать в другие веб-приложения, что бы понять, какая же тебе организация больше по душе.
 

Alexandre

PHPПенсионер
Гриша К.
надо мыслить немного шире, чем файловая структура.

Если речь идет о переделывании чего-либо, то прежде всего, перед тем, как наляпать чего-нибудь я советую прочитать книку Фаулера "Рефакторинг. Улучшение существующего кода".

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

Существует несколько стилей программирования, один из них ООП. Если ты не приверженец этого стиля, то эта книга возможно убедит тебя в этом...
 

zerkms

TDD infected
Команда форума
Alexandre
не каждый код может быть отрефакторен
не каждый код дешевле рефакторить, чем писать с нуля

для возможности рефакторинга код должен быть уже сам по себе хорошего качества и структура должна быть спроектирована тоже не "на коленке"

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

Гриша К.

Новичок
Спасибо всем за ответы.
Solid
Что такое framework я не знал. Чуть чуть узнал, найдя в google определение термина: http://www.google.ru/search?hl=ru&lr=&defl=ru&q=define:Framework&sa=X&oi=glossary_definition&ct=title.
Как http://www.clawphp.org/ может помочь в разработке приложения, я совсем не понял.

Alexandre
Вы нверное подмали, что раз я задал вопрос о файловой структуре, значит об остольном я не думаю. - Нет, это не так.
Решив этот вопрос, перейду с следующему (необязательно зсоздавая топик).
Код моего интернет-магазина не подлежит переделыванию.
Структура тоже.
Когда я писал (вставлял части кода методом тыка) код интернет-магазина, я использовал материалы из книг и интернета, непонимая например вообще, что такое $_SESSION['cart'][$new] (Я знал только, что если стоит $, то значит должна быть переменная).

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

Alexandre

PHPПенсионер
не каждый код может быть отрефакторен
не каждый код дешевле рефакторить, чем писать с нуля

для возможности рефакторинга код должен быть уже сам по себе хорошего качества и структура должна быть спроектирована тоже не "на коленке"
zerkms, согласен, тем более это почти советы автора...(см главу Когда не нужен рефакторинг)
Книга помогает думать по иному, лично мне, она изменила взгляд на ООП, да и те кто ее прочитал по моему совету - согласны со мной и благодарны за совет.

Гриша К., эта книга не панацея ООП, есть другие достойные книги, просто данная книга мне сильно помогла в понятии Объектной модели, соответственно и в создании Объектно Ориентированной Архитектуры.

Есть понятие стратегия, есть понятие тактика.
Так эта книга - тактического содержания, т.е. как правильно кодить (хоть и написана применительно к java). Есть книги стратегического содержания, например про "Паттерны проектирования" (http://www.books.ru/shop/books/8451) или мне нравится книга Мартина "Быстрая разработка программ" http://www.books.ru/shop/books/147550
 
Сверху