LINUX.ORG.RU

как структуировать php файл для полноценного приложения?

 


0

1

взять какое-нибудь «приложение», бложек например. и если не связываться ни с какими шаблонизаторами и прочими mvc, и даже классами, а писать все плоским кодом... как бы вы посоветовали структуировать php файл? да, все хочу написать в одном php файле :)
уже перерыл половину интернетов на тему шаблонизаторов в php, но все близко не то, как мне кажется.

будет ЧПУ: try_files $uri $uri/ /default.php?$args&test=$uri; и далее парсим $_GET['test']

<?php
foreach (explode('/', $_GET['test']) as $test) {
  if (strlen($test) > 0) $path[] = $test;
}
?>

теперь пытаюсь придумать, как отделить php от html (в плане логики).

<?php
if (sizeof($path) > 0) {
  if (implode('/', $path) == 'about') {
    // делаем что-нибудь для страницы /about

    $action = 'about';
  }
  elseif (implode('/', $path) == 'about/feedback') {
    // делаем что-нибудь для страницы /about/feedback

    // обрабатываем POST запрос с формы
    if ($_SERVER['REQUEST_METHOD'] == 'POST') { }

    $action = 'feedback';
  }
  else {
    $action = 'notfound';
  }
}
else {
  $action = 'default';
}
?>

<?php if ($_SERVER['REQUEST_METHOD'] == 'GET'): ?>
<?php
switch ($action):
case 'about':
?>
<html></html> <!-- страничка /about -->
<?php
case 'feedback':
?>
<html></html> <!-- страничка /about/feedback с формой -->
<?php
case 'default':
default:
?>
<html></html> <!-- главная страница -->
<?php endswitch; ?>
<?php endif; ?>

чтобы при этом каждую страницу (кусочек от $path) можно было обработать в отдельности, так же в отдельности обработать POST и GET для нее, а потом так же вывести с любым шаблоном. :|

глядя на этот код, вы можете что-нибудь посоветовать, как его ээ... «архитектурно» улучшить? :)
чтобы все было в одном php файле, но все было красиво и четко разделено: страницы по отдельности с ЧПУ, для каждой страницы обработка GET и POST, для каждой страницы свой шаблон.

и как посоветуете быть, например, с комментариями, - чтобы не мешать php с sql-запросами и html код.
вытащить из базы все данные в массивы, а потом эти же массивы в html через <?php foreach (): ?> вывести? более простого решения нет?

★★★★★

да даже если just4fun. задумка такая =)

сделать чтобы.. была мультидоменность (или как это еще назвать, - несколько хостов/сайтов), у каждого сайта имеются какие-то свои виртуальные страницы (виртуальные потому что не существуют физически, а описываются в $path), для каждой страницы можно отдельно обрабатывать POST и GET, и для каждой страницы установить свой отдельные шаблоны. и многое-многое другое в этом роде.

и все это - хранится и обрабатывается в одном единственном .php файле, написанным плоским кодом, с документацией и пояснениями как «делать правильно». ящитаю, это просто отлично выйдет для сайта-визиток. недофреймворк в виде документации (по большей части), с одним лишь .php в файлом в котором определена структура приложения.

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от VirRaa

Ну красивый роутинг можно сделать с ~30 строками. glue.php например.

rikardoac
()

Как выводить данные, вы уже знаете. Если не хотите мешать запросы к БД, для вывода данных создайте отдельные функции. А вообще хорошо бы отделить модель(довольно объёмную часть приложения, от представления(функций выводящих данные из модели в HTML-представление). И связать их небольшим контроллером. В крайнем случае разделите приложение на модель и представление, это позволит отделить логику приложения(и запросы к БД) от вывода данных в HTML. И, конечно, код нужно комментировать(HTML и SQL нуждаются в комментариях не меньше, чем PHP. По факту, вам нужно написать роутинг, и в зависимости от пути дёргать вызов функций отвечающих за модель(данные, бизнес-логика) и представление(функцию, отвечающую за вывод страницы).

lucentcode ★★★★★
()
Ответ на: комментарий от Spoofing

простыни кода не нужны

с документацией и пояснениями как «делать правильно»

«правильно» не будет, потому что вы новичок
а специалист бы не выдал бы такой проект

недофреймворк в виде документации (по большей части)

сейчас считают, что документации больше чем кода только у адового говнокода
в моде самодокументируемый код

anonymous
()
Ответ на: комментарий от anonymous

в моде самодокументируемый код

говори только за себя.

rikardoac
()
Ответ на: комментарий от Spoofing

В принципе это нормально, настоящий вебмастер должен посадить дерево, вырастить сына и написать свой фреймворк, но вот «все в одном файле» идея не здоровая.

чтобы все было в одном php файле ... для каждой страницы свой шаблон.

это /0

goingUp ★★★★★
()

Писать все-таки лучше в разных файлах. Но еще дописать make-файл, который бы делал типа «сборку» релиза - вместо инклудов вставлял конкретные файлы и на выходе выдавал твой монолитный код.

SunDoc
()

Это будет страшная путаница, прислушайтесь к человеку уже попытавшемуся однажды сделать подобную глупость. И вообще зачем начинать сейчас новые проекты на PHP???

tyler19
()

foreach

Когда я учил php, не было оператора foreach. Новшество? А остальное всё то же.

Deleted
()
Ответ на: комментарий от Spoofing

И всё таки, я бы крайне не рекомендовал идти этим путём.

VirRaa ★★★
()
Ответ на: комментарий от anonymous

В моде код посреди документации, не?

zz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.