forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Обработчик CMS в одном файле (http://forum.boolean.name/showthread.php?t=19128)

mtaracing 01.05.2014 22:16

Ответ: Обработчик CMS в одном файле
 
Буду разбираться... Я вот еще что хотел спросить, вот например взять cms юкоза, там к примеру в каталоге статей на страницы с материалом и описанием ссылки такого типа:

сайт.ру/publ/12-1-0-19
сайт.ру/publ/12-1-0-22
сайт.ру/publ/12-1-0-26
сайт.ру/publ/12-1-0-27
сайт.ру/publ/12-1-0-29
сайт.ру/publ/12-1-0-88

Эти страницы формируется через get запрос в одном файле publ.php? Или у каждого из адресов есть отдельная страница (файл .php или .html), судя потому как индексирует поисковик то наверное да. Или я ошибаюсь?

moka 02.05.2014 02:15

Цитата:

Сообщение от Randomize (Сообщение 279800)
Что плохого в отделении логики от представления?

Тем что современный подход и простота на основе micro-services позволяет создавать боле масштабируемые системы с в разы лучше производительностью.

MVC часто является сильным блоком от простоты, когда тебе тупо нужно обозначить route и там же ответить. Не все запросы требуют загрузку из бд, не все требуют View'а вообще. Я уже не говорю о взять любую MVC модель, и перевезти на single-page основу, будет куча проблем.
Придерживаясь простоты, всё что нужно - это очень простая самодельная ORM для только валидации, и возможность обозначения route'ов и тамже их контроллеров. - Всё что нужно для полного счастья.

Любая система на основе MVC доказала себя как enterprise и те кому не пофиг, стараются с этим не связываться. Взять например Wordpress который не следует MVC, а является гибритом - именно то к чему приходит любой пользователь MVC с долгой жизнью проекта. И значит вот у них из Core Developer команды уходят люди, постоянно, т.к. это убожество с которым невозможно им работать. Один из явных примеров: Ghost, где ребята хотели всего-то сделать другой WYSIWYG редактор, с Markdown'ом, и обосрались, в итоге нафиг ушли из компании и сделали за не продолжительный срок в разы мощнее блог движёк чем Wordpress. Чище и проще.

Всякие MVC, PAC, MVP, MVVM, и чё там ещё, это как "рецепт" для тех кто своей головой по задачи не думает. В команде хороших ребят, есть явные бизнес и тех. задачи, сядьте, обсудите и своими мозгами думая, используя примитив и простоту делайте то что нужно, не заморачиваясь системами паттернов и правилами "как нужно делать приложения".

Потому что это всё продукт enterprise, и создан решать конкретную проблему тупости разрабов в enterprise мире.
В мире мозгов - этой тупости поменьше, следственно и такие решения нафиг не нужны.

Цитата:

Сообщение от mtaracing (Сообщение 279807)
Буду разбираться... Я вот еще что хотел спросить, вот например взять cms юкоза, там к примеру в каталоге статей на страницы с материалом и описанием ссылки такого типа:

сайт.ру/publ/12-1-0-19
сайт.ру/publ/12-1-0-22
сайт.ру/publ/12-1-0-26
сайт.ру/publ/12-1-0-27
сайт.ру/publ/12-1-0-29
сайт.ру/publ/12-1-0-88

Эти страницы формируется через get запрос в одном файле publ.php? Или у каждого из адресов есть отдельная страница (файл .php или .html), судя потому как индексирует поисковик то наверное да. Или я ошибаюсь?

Всё в одном файле, и не publ.php скорее всего.
Кури "pretty url".

Randomize 02.05.2014 05:20

Ответ: Обработчик CMS в одном файле
 
moka, красиво написал, прям вау. (не сарказм)

Nex 02.05.2014 17:25

Ответ: Обработчик CMS в одном файле
 
Цитата:

Сообщение от mtaracing (Сообщение 279807)
Буду разбираться... Я вот еще что хотел спросить, вот например взять cms юкоза, там к примеру в каталоге статей на страницы с материалом и описанием ссылки такого типа:

сайт.ру/publ/12-1-0-19
сайт.ру/publ/12-1-0-22
сайт.ру/publ/12-1-0-26
сайт.ру/publ/12-1-0-27
сайт.ру/publ/12-1-0-29
сайт.ру/publ/12-1-0-88

Эти страницы формируется через get запрос в одном файле publ.php? Или у каждого из адресов есть отдельная страница (файл .php или .html), судя потому как индексирует поисковик то наверное да. Или я ошибаюсь?

publ это скорее всего какой нибудь раздел для статей.
если бы это был файл через который генерируется, то скорее всего было бы так.
Цитата:

сайт.ру/publ.php?12-1-0-19
сайт.ру/publ.php?12-1-0-22
сайт.ру/publ.php?12-1-0-26
сайт.ру/publ.php?12-1-0-27
сайт.ру/publ.php?12-1-0-29
сайт.ру/publ.php?12-1-0-88
хотя возможно я ошибаюсь. :)

moka 03.05.2014 04:29

Ответ: Обработчик CMS в одном файле
 
Используя rewrite функционал в практически любом нормальном веб сервере (apache, nginx, и т.п.) можно модифицировать любой запрос (url) до того как он перенаправится на обработку скриптом (php в данном случае).
Одна из техни Pretty URL, когда все запросы перенаправляют на один файл index.php, и уже в index.php далее парсят всю строку запроса в аргументы, и исходя из них подбирается подходящий route файл и дальше, по цепи логики.

Короче, не нужно куча файлов, и не нужно никаких директорий, это всего абстрактные записи - то как выглядит url не имеет ничего общего со структурой директорий/папок.
А лишь служит данными по которым фильтруются данные в базе, и всё по одному файлу шаблону выводиться как ответ.

Бля, нихера не "короче" вышло. В общем хз как короче - иди в общем кодить, и меньше вопросы задавай, больше экспериментируй - только так и научишься. В интернетах меньше пользы чем в практике и собственных ошибках/успехах.
Такого рода как у тебя вопросы, не возникают у того кто хоть чуток нормально поигрался с php, apache и т.п. следственно, не трать чужое время - иди и программируй.

mtaracing 05.05.2014 00:07

Ответ: Обработчик CMS в одном файле
 
Начал писать код, через единую точку входа, вот index:

Код:

<?php

require_once("config.php");
require_once("classes/ACore.php");

if ($_GET['option']) {
$class = trim(strip_tags($_GET['option']));
} else {
$class = 'main';
}


if (file_exists("classes/".$class.".php")) {
include("classes/".$class.".php");


if (class_exists($class)) {
$obj = new $class;
$obj->get_body();

} else {
exit ();

}


} else {
exit();
}



?>

вот ACore

Код:

<?php
abstract class ACore {




protected function get_header() {
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<link type="text/css" rel="StyleSheet" href="/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="">
<title></title>
</head>

<body>
123
</body>
</html>
';


}



public function get_body() {
$this->get_header();

}




}
?>

В config.php только константы отвечающие за соединение с БД, в шаблоне получаю такую траблу, валидность страница не проходит, валидатор пишет Знак "" не допускается в прологе

А вот и код в браузере.



Что это такое, и как его исправить? К тому же всё в перемешку, хотя код указан нормально.

moka 05.05.2014 00:10

Ответ: Обработчик CMS в одном файле
 
Во первых учитывай что после ?> новая строка - будет как новая строка в HTML.

Также не используй echo для вывода HTML тегов, вообще.
Закрываей php тег ?> и далее пиши нормальный html со встравками типа <?=$variable?> и тому подобными.
А лучше найди нормальный templating язык.
Также TAB'ы (indention) для кого придумали? Код читать когда каждая строка слева не реально, это относится к html'у также и к php.

Экспиреминтируй больше. Ты тут выложил код хрен знает что, конечно у тебя там будут проблемы, т.к. там каша. Увидел проблему - бери простой прототип пиши и смотри там. Экспериментируй больше чем пиши на форуме.

mtaracing 05.05.2014 00:14

Ответ: Обработчик CMS в одном файле
 
php теги я закрываю. Пробовал выводить страницу через include, та же фигня. А на счет indention, мне удобней читать код когда всё с лева.

moka 05.05.2014 00:21

Ответ: Обработчик CMS в одном файле
 
Цитата:

Сообщение от mtaracing (Сообщение 279928)
php теги я закрываю.

echo '<!DOCTYPE HT.....

Это ты не закрыл, это ты выводишь html используя php.

Цитата:

Сообщение от mtaracing (Сообщение 279928)
А на счет indention, мне удобней читать код когда всё с лева.

Почему всему миру удобнее с, а тебе вдруг без? Не выпендривайся, другим кому код показываешь - вырвиглаз неудобно. Программисты учатся работать совместно, и с этим идут общепринятые, "органически" выявленные принципы.

mtaracing 05.05.2014 00:36

Ответ: Обработчик CMS в одном файле
 
echo у меня закрыт.

moka 05.05.2014 10:34

Ответ: Обработчик CMS в одном файле
 
Ты видимо не понял.
Цитата:

Также не используй echo для вывода HTML тегов, вообще.
НЕ используй ECHO для ВЫВОДА HTML ТЕГОВ.

mtaracing 05.05.2014 15:10

Ответ: Обработчик CMS в одном файле
 
Я же написал, при использовании include та же фигня.

moka 05.05.2014 17:11

Ответ: Обработчик CMS в одном файле
 
Вот тебе пример, изучай (запусти с сервера):
PHP код:

<?php echo "1"?>
<?php $i 
10?>
<?php $i
++; ?>
<html></html>


mtaracing 05.05.2014 23:19

Ответ: Обработчик CMS в одном файле
 
Вы меня наверное не слышите. Причем здесь этот код...

mtaracing 05.05.2014 23:39

Ответ: Обработчик CMS в одном файле
 
Всё, я уже и сам разобрался, с 25 раза перебирая каждую функцию кода выяснил в чем ошибка - кодировка была UTF8, поставил без BOM и сразу всё нормально заработало.


Часовой пояс GMT +4, время: 20:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot