В общем решил прислушаться и объеденить два метода.
Практика и Матчасть.

Моя попытка реализовать Model Controller View
Сделал гостевую книгу на основе этой модели.

Прошу по критиковать.
Рабочий вариант тут: GB mvc
view.php
HTML |
<html> <head> <title>GB MVC</title> <meta http-equiv='content-type' content='text/html; charset=utf-8'/> <meta name='description' content='#'/> <meta name='keyword' content="#"/> <link rel='stylesheet' href='style.css' type='text/css' media='screen'/> </head> <body> <!-- show --> <!-- BEGIN book_element --> <?php echo $book; ?> <!-- END book_element --> <hr> <!-- action form --> <form action = "controller.php" method = "POST"> <strong>Имя</strong>: <input type = "text" name = "name" class="sub-input" /><br/> <strong>Сообщение</strong>:<br/> <textarea name = "msg" cols = "30" rows = "10" class="sub-input" > </textarea><br/> <input type = "submit" value="Отправить" name = "ok" class="sub-input" /><br/> </form> </body> </html> |
PHP |
<?php |
PHP |
<?php |
HTML |
<textarea name = "msg" cols = "30" rows = "10" class="sub-input" > </textarea> |
PHP |
if (trim($_POST['name']) == '') |
Цитата |
3. Вот это не есть гут, тысячу раз писано про инициализацию PHP if (trim($_POST['name']) == '') |
Цитата |
Вот так не делай, курсор на начало не ставится HTML <textarea name = "msg" cols = "30" rows = "10" class="sub-input" > </textarea> |
Цитата |
Или вы что то другое имели ввиду ? |
HTML |
<textarea name = "msg" cols = "30" rows = "10" class="sub-input" ></textarea> |
Цитата |
3. Вот это не есть гут, тысячу раз писано про инициализацию |
PHP |
$name = ''; |
Цитата |
cols = "30" rows = "10" Это же задает размер тестового поля. По другому то я не задам его. |
Цитата |
mvc и процедуры не совместимы. |
Цитата |
3. глобальная переменная - плохо. |
Цитата |
Это надо сделать вот так? |
PHP |
$name = !empty($_POST['name'])?trim($_POST['name']):NULL; |
Цитата |
вызов view должен производиться из контроллера, а не модели. |
Цитата |
вообще, все неплохо, но я бы с большим интересом посмотрел на это, реализованное в классах |
Цитата |
Глобальная переменная хорошо и очень удобно |
Цитата (twin @ 12.10.2009 - 21:39) | ||
А меня вот такие заявления удручают... С чего бы вдруг. Я вот очень широко использую и считаю гораздо удобнее, чем на классах. |
Цитата |
Простые вещи надо делать просто. Вы можете мне тут возразить, что даже в простых вещах надо закладываться на усложнение. |
Цитата |
twin, чему учишь? Глобальные переменные это ошибка/привычка, от которой нужно избавляться в самом начале. |
Цитата |
что за книгу читаешь? |
Цитата |
вообще предполагается использование параметров вместо глобальных переменных. |
PHP |
htmlspecialchars("вывод"); |
PHP |
<?php |
PHP |
function load_data($file_name) { |
PHP |
function load_data($file_name) { |
Код |
::55555::07:04:21 / 10.13.09<br/> <br/><br/>::<script>alert(\'alarm\');</script>::07:04:55 / 10.13.09<br/> <br/><br/>:: JetBrains WebIDE — публичная сборка #500::07:05:10 / 10.13.09<br/>Квест «идеальное IDE для PHP» продолжается :) За прошедшую с предыдущей сборки неделю стали доступны две наиболее востребованые фичи — PHPUnit и FTP, ну и конечно мы постарались исправить как можно больше ошибок. IDE — начальная версия поддержки удаленных хостов — пока что только FTP upload. (Планируется: открытие удаленного проекта, автосинхронизация, SFTP/SSL/всякие cloud storage). Находится в меню Settings — Deploy&Run. — Новые удобные закладки (F11) PHP — начальная версия поддержки PHPUnit (пока только локальный запуск) — добавлено выведение типов для переменной в «foreach(...)», элемента массива «array[...]» и тернарного оператора \"?:\" — добавлены поиск использований (Ctrl-Alt-F7) и переименование (Shift-F6) для глобальных переменных — исправлены поиск использований и переименование для статических членов класса — исправлены различные ошибки форматирования кода и комментариев<br/><br/>::I am::07:05:33 / 10.13.09<br/>Its work :)<br/><br/>::<form> <input type=\"button\" onclick= \"alert(\'Are you sure you want to give us the deed to your house?\')\" value=\"Confirmation Alert\"> </form>::07:05:57 / 10.13.09<br/> <br/><br/>::Ы::07:07:42 / 10.13.09<br/><inpur type=\'text\' value=\'ку-ку\'/> <br/><br/>::S::07:08:45 / 10.13.09<br/><inpur type=text value=ok /> <br/><br/>::<h1>Joker<h1>::07:12:01 / 10.13.09<br/><h1>Joker The Best</h1><br/><br/>::I::07:12:33 / 10.13.09<br/>hello <br/><br/>::hello::07:22:28 / 10.13.09<br/><h1>Hello</h1><br/><br/>::hello::14:27:57 / 10.13.09<br/><form> <input> </form><br/><br/> |
PHP |
function add_data($file_name) { |
PHP |
function load_data($file_name) |
Цитата (Joker @ 13.10.2009 - 11:39) |
скажи зачем в гете переменная rnd ??? |
Цитата |
не могу представить ни одного пока примера. может кинешь один для обмозгования? ну вот с рекурсией, и когда с ней нельзя глобальную переменную использовать. |
PHP |
$count = 0; |
Цитата |
Так же и с рекурсией. Тот же счетчик. Параметром его не передать, да и не вывести показания просто так. Вообще много чего можно. Ты просто привык к своим $this-> а это практически тоже самое. |
PHP |
$count = 0; |
Цитата |
Ты просто привык к своим $this-> а это практически тоже самое |
Цитата |
А ты незадуряясь грузишь сразу всё, нужно это или нет. А потом, чтобы работать с необходимыми на данный момент данными, начинаешь маневрировать вызовами и обращениями. По этому у тебя и возникают потребности в абстрактных уровнях (чего мне совершенно не требуется). И чем дальше, тем больше. Все это на самом деле сильно путает следы и ухудшает читабельность (на уровне функционала, не синтаксиса). |
Цитата |
Вообще ты наверно совсем не так представляешь себе мой подход, чем он есть на самом деле. Потом попробуем сравнить и сделать выводы. |
Цитата |
По этому у тебя и возникают потребности в абстрактных уровнях (чего мне совершенно не требуется). |
Цитата |
Я динамически формирую скрипт, в котором область видимости не затрагивает другие сценарии |
Цитата |
НИКОГДА не гружу все - всегда только то, что нужно и ничего лишнего. |
PHP |
$valid = new Validator(); |
PHP |
$error = !is_numeric($_POST['phone'])?$errors['phone']:NULL; |
Цитата |
что скажешь про счетчики обращений к файлам и бд. они могут быть в одном файле. ежли так расчитывать на то, ч то они не пересекутся, то архитектура поставит это ограничение. а нужно не следить, чтобы и не подключились случайно все разом, а просто все должно не зависимым быть. |
Цитата |
только не говори, Твин, что у тебя "методы" доступа к "телефону юзера" и его "имени" лежат в разных файлах, и подключается всегда только тот, который нужен. и оба подключаются только, если их оба и нужно использовать. ну что за детский сад - сплошь доводы "лишняя подключенная функция". |
Цитата |
НИКОГДА не гружу все - всегда только то, что нужно и ничего лишнего. |
Цитата |
А довод у меня был и остается один - ты усложняешь все, пытаясь упростить. Сам того не замечая. |