Организация и структура проекта на php
Я совсем недавно изучаю язык и web-программирование, уже достаточно хорошо всё получается, но есть одна проблема. Сразу говорю, что ООП мы сейчас не касаемся, берём php как структурный язык. Вот пишется проект на php/mysql/js. Какой проект - не суть важно, их много. Так вот, у меня возник вопрос - как правильно структурировать всё это дело? Сейчас у меня получается что-то вроде вёрстки (html файл), в котором в нужные места вместо статики стоят вызовы функций. Это же неправильно? Как избавиться? Я даже не очень могу сформулировать вопрос, потому что чётко не знаю, что мне нужно. Мне нужна правильная структура php файлов. У меня что то вроде инклуд хедер, хтмл код со вставками пхп, инклуд футер. Тоже хрень какая-то. Что почитать по теме?
ТУТ можешь ознакомиться с лучшими представителями.
Поинтересуйся шаблонизаторами. Самый популярный - Smarty. Вот
Про это в курсе, занимаюсь. Но интересует следующий по целесообразности вариант. Дело в том, что проект уже готов, но он представляет собой то, что я уже сказал. Всё работает прекрасно, но мне не нравится внутренняя структура. Хочется чёткости и возможности развития. Можно ли как то улучшить, относительно того, что имею я?
Ну почему же не правильно? И так хорошо, и эдак. Твой подход хорош своим быстродействием, хотя и в ущерб читабельности кода.
То есть в целом это нормально, не считается извращением, так делают? Не т ли каких нибудь компромиссов, чтобы в целом подоход оставить тот же, а читаемость всё ж повысить?
Сам я, уже испробовав на себе очень многое кроме цианида, могу сказать, что придерживаюсь такой схемы:
1. Функциональная часть. Своего рода библиотека, framework, в большинстве случаев подходящая под различные нужды без каких-либо изменений.
2. Логика конкретного приложения. Т.е. скрипты, обеспечивающие конкретную задачу и подготовку данных для вывода в поток.
3. Шаблоны, непосредственно формирующие выходной поток.
4. Вход-выход, настройки и т.п., через что происходит общение конечного получателя (браузера или ещё чего) со вторым и третьим вышеперечисленными.
Но тем не менее всё это дело вставлется напрямую в html. Ну т.е. html выглядит так.
...
<? function(); ?>
...
<? function(); ?>
...
<a><? get_link(); ?></a>
...
Последнее - для примера. И я вообще себе плохо представляю, как можно сделать иначе. Ну разве что сделать папочку html файлов, где вместо обрабатываемых мест поставить что-то вроде %link и т.д., то есть обозначить их внутренними переменными, а в скриптах брать шаблон и проводить нужные замены - такой вариант есть? Я имею ввиду подготовку всех данных для вставки в шаблон, а потом замену %blablabla на код.
Я выше привел что-то вроде ещё одного подхода. Если и он не подходит, могли бы как то конкретно описать нормальный подход? Я твои пункты понял, но без конкретики сложно.
Раньше было так:
...
<?=get_link(); ?>
...
Теперь так:
...
{link}
...
При этом в index.php нечто вроде:
$tpl=ereg_replace("{link}", get_link, $tpl);
Я прав? Так нормально? Поправьте где-то.
И ещё вопрос. Возникла мысль о нужности вынесения в небольшие *.tpl элементов вёрстки, которые повторяются много раз. Чтобы в коде не использовать хтмл тэги вообще, а только вставлять нужные *.tpl. Ну а в хтмл при этом не будет ни одного html-тега.
Загляни в раздел "книги", там много чего интересного. Так же посмотри по форуму, структура уже обсуждалась. Нет хорошей или плохой структуры, есть подходящая под данный проект и не подходящая.
Меня просто интересует сейчас вопрос - делают ли так, как я написал выше? Мне кажется это подходящим для моего проекта, но я не уверен, что так вообще делают, т.к. опыта мало, да и вообще чужих умных проектов изнутри почти не видел.
http://www.codenet.ru/webmast/php/Templates-About.php. Очень полезная статья и мне данный подход понравился. Не думаю, что там стали бы постить, если бы это было неверно с точки зрения организации и структуризации. Остановлюсь на этом варианте... Всем большое спасибо, что откликнулись и помогли, несмотря на неточную постановку вопроса.
Я сейчас очень внимательно прочитал
Upd. В чистом виде указанный там метод не очень, но мне главное было ухватить мысль, буду переделывать под себя. :)