[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООПять.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
twin
Почитал пока отзывы, книгу нужно ждать. Так он пишет не про PHP вовсе. А я именно про него. Не думаете же вы, что я стану процедурно писать на JAVA. А это небо и земля.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
sharki
twin
А ты абстрагируйся от языка, и внимай идеи самой архитектуры приложения, ты можешь (хотя это достаточно трудно) реализовать его идеи процедурно
killer8080
Цитата (forza @ 12.12.2012 - 08:34)
if(!defined('IRB_KEY')) {   header("HTTP/1.1 404 Not Found");         exit(file_get_contents('../404.html')); }
Я не зря написал про это. Сейчас самые нищие бесплатные хотинги предоставляют возможность изменять .htaccess. Deny from all - и будет вам счастье

А кто сказал что, на сервере обязан быть апач? user posted image
killer8080
Цитата (twin @ 12.12.2012 - 00:33)
Какая нафиг замена? Может его еще носки научить стирать? Класс разработан для использования базы MySQL. Точка. Унификация - зло.

Пусть так, но с той же mysql можно работать тремя способами, а в твоем коде устаревший mysql. Что будешь делать, когда потребуется перейти на mysqli например? Или в каком то проекте используется pdo, а тебе нужно включит туда класс из своего репозитория, не будешь же для него отдельный конект к бд делать? Разве не логично использовать для работы с базой отдельный класс?
twin
Не логично. Пусть в моем коде устаревший на твой взгляд mysql. Меня он вполне устраивает и будет устраивать еще десяток лет минимум. Никуда не денется.

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

А если завтра mysqli устареет и придумают что-то вообще не вписывающееся в рамки отдельного класса БД? Всего не предусмотришь, да и не нужно.

Да, модуль писался под конкретные условия. Поребуется под PDO, напишу новый. Мир не перевернется из-за того, что я потрачу пару часов на переделку. Но зато код лишен плэйсхолдеров, и это огромный плюс, хотя почему то считается минусом.

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

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
forza
if(!defined('IRB_KEY')) {   header("HTTP/1.1 404 Not Found");         exit(file_get_contents('../404.html')); }

Да я и не говорил что эта критическая ошибка : ) Просто высказал свои чувства.
Цитата
А кто сказал что, на сервере обязан быть апач?

Как мне известно на nginx это тоже можно сделать средствами сервера. Хотелось бы лучше узнать на каких популярных веб-серверах нельзя сделать этот аналог "Deny from all"?

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
Dezigo
twin Я приложил файл, вот так я писал в 2006 году
и (все кто начинал/ учился, тоже так писали.)
Вам это нечего не напоминает?
twin
Что оно мне должно напоминать, простите?

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

Так что я не считаю, что вы совершили скачек вперед. Скорее в сторону.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
killer8080
Цитата (twin @ 12.12.2012 - 11:18)
Не логично. Пусть в моем коде устаревший на твой взгляд mysql. Меня он вполне устраивает и будет устраивать еще десяток лет минимум. Никуда не денется.

это не моё мнение, это стратегия разрабов PHP. То что Mysql кандидат на вылет - это факт, и лишь вопрос времени.
Цитата (twin @ 12.12.2012 - 11:18)
На мой взгляд вообще не логично делать отдельный класс для работы с базой. Ни одного случая в моей практике, и ни одного в практике моих знакомых не было, что бы в действующем проекте приходилось менять базу или драйвер. Для чего нужен класс, что бы на форуме сказать, что я могу одним движением сменить носитель данных? Вот ты мне скажи, как часто ты меняешь их на переправе?

На действующем может и нет, хотя то же не факт. Но ведь речь идет о повторном использовании кода в других проектах.
Цитата (twin @ 12.12.2012 - 11:18)
Да, модуль писался под конкретные условия. Поребуется под PDO, напишу новый. Мир не перевернется из-за того, что я потрачу пару часов на переделку. Но зато код лишен плэйсхолдеров, и это огромный плюс, хотя почему то считается минусом.

не перевернется конечно, только зачем переписывать то, что изначально можно сделать работоспособным в различных конфигурациях?
Цитата (twin @ 12.12.2012 - 11:18)
На мой взгляд вообще не логично делать отдельный класс для работы с базой.

И тем не менее используешь ведь обертку к mysql_query, чем она принципиально отличается от класса?
SlavaFr
Цитата (twin @ 11.12.2012 - 17:25)
Лично я не задуряясь все пишу в контроллер. Открыл файл - все на глазах. Коду то там 50 строк максимум, чего растаскивать по файлам, кутать в фуфайки классов и плести веревки наследников? Ну скажите мне, каким дебилом нужно быть, что бы не разобраться в таком коде:




if($ok)
{
if(empty($POST['value1']))
$info[] = IRB_LANG_NO_NAME;

if(empty($POST['value2']))
$info[] = IRB_LANG_NO_TEXT;

if(empty($info))
{
mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."guest`
SET
`name` = '"
. escapeString($POST['value1']) ."',
`text` = '"
. escapeString($POST['value2']) ."'"
);

reDirect();
}
}



$pgt = new IRB_Paginator($GET['num'], IRB_CONFIG_NUM_ROWS);

$res = $pgt -> countQuery("SELECT DATE_FORMAT(`date`,'%d-%m-%Y') AS `date`,
`name`, `text`
FROM `"
. IRB_DBPREFIX ."guest`
ORDER BY `id` ASC"

);

$page_menu = $pgt -> createMenu();
$rows = '';

if(mysql_num_rows($res) > 0)
{
$cont = getTpl('guest/rows');
$bb = new IRB_BBdecoder();

while($row = mysql_fetch_assoc($res))
{
$row['name'] = htmlspecialchars($row['name']);
$row['text'] = $bb -> createBBtags($row['text']);
$rows .= parseTpl($cont, $row);
}
}


$POST = htmlChars($POST);
include IRB_ROOT .'/skins/tpl/guest/show.tpl';


Цитата (twin @ 11.12.2012 - 17:25)


Неужели вы реально считаете, что тут требуется какая-то архитектура? Иначе приложение невозможно поддерживать?

Да, там есть некоторые моменты, допустим функции-обертки. Но их можно легко поменять на прототип и ничего не сломается. А если придерживаться корпоративных правил, то можно использовать их. Или переменные $POST. Если знаешь, что в верхнем регистре пишутся глобальные переменные и знаешь правила инициализации - тоже не возникнет проблем.

Разница с фреймворком очевидна - можно пользоваться правилами (нужно по идее), а можно и нет. Ничего не сломается. Да и правила все помещаются на лиске А4, в отличие от док по фреймворкам.


Поехали :)
Ворможно это и контроллер, но не контролер в смысле MVC.
Причина тому то, что полностью отсутствует View-Skript.
Как понять начинающему програмисту то, что такие переменные как $info, $page_menu и $rows будут применены где то в IRB_ROOT .'/skins/tpl/guest/show.tpl';

Участок:

if(mysql_num_rows($res) > 0)
{
$cont = getTpl('guest/rows');
$bb = new IRB_BBdecoder();

while($row = mysql_fetch_assoc($res))
{
$row['name'] = htmlspecialchars($row['name']);
$row['text'] = $bb -> createBBtags($row['text']);
$rows .= parseTpl($cont, $row);
}
}

занимается тем, чем должно заниматься именно View.

Теперь добавляем туда еще какой нибудь банер с парачкой sql и начинаем удивляться почему стало все таким большим, непонятным, не тестируемым и монолитным. Не чего не остается как делатъ refactoring этого кода (дрожа от страха, что измененный не тестируемый код может привести к непредсказуемым эффектам), который с самого начала мог быть написан правильно, или осторожно оглянутся "не видет ли кто?" и наляпать свой код в общую кучу в надежде, что ни чего изменять больше не придется, или что когда то найдется время чтоб это улучшить( которого ни когда нет, пока все работает).
Правильно ли называть "name" как $POST['value1'] или "text" как $POST['value2'] ?
Что лучше видеть в коде контролера это:

mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."guest`
SET
`name` = '"
. escapeString($POST['value1']) ."',
`text` = '"
. escapeString($POST['value2']) ."'"
);

или это:

$guest = new Guest($name);
$gusst->setText($text);
$guest->save();

Не лучше ли все что потом будет изменяться или происходить с Guest дальше в нем и программировать? Что мы теряем? немного скорости и немного памяти, но зато у нас появляется чтото понятное, не просто строка в базе данных, а ГОСТЬ!
ГОСТЬ, это понятное не только другим программистам, но и начальнику отдела кадров и даже уборщице.

Ну а в общем, если код не когда не меняется, не когда не будет интересен в будущем, то так бы тоже устроило.


_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.