1 - Полезно ли это будет хоть кому-то кроме меня?нет, но для тебя это может стать вполне приемлемым инструментом, если отточишь до блеска.
2 - В каком направлении двигаться и в чем косяки такого способа работы с базой?твой косяк в том, что ты пишешь сам не понимая чего и называешь это все очень громкими именами, такими как ORM
Model::data(array("status"=>2))->where(array("id"=>2))->update();
они никому не нужны. потому что реальные запросы гораздо более сложны, чем выборка по одному условию where. есть запросы, которые просто невозможно уложить в билдеры. ты же делаешь акцент на билдеры, а должен делать на ORM. Вот тебе пример data mapper класса. для его работоспособности используется простой билдер, но сложный sql пишется руками. и практически всегда возвращаются не просто объекты, а объекты моделей, ассоциируемые с этим data mapper. Обрати внимание, что почти в каждом методе вызываются return parent::result2objects(...);
return parent::findModelListByParams($params);
return parent::findModelByParams($params);
Правильно ли так формировать уведомления?нет
Я более менее уверенно знаю CSS и HTMLуверяю тебя, ты не знаешь и 1%.
JS/PHP/Bootstrap/CMSу тебя в голове каша
как просмотреть sql запрос который в итоге получился. Ранее мне это не требовалосьвот поэтому все эти ваши PDO - лютое унылое говно, с которым невозможно работать.
,честно говоря не вижу пока что особой нужды в ооп , почему бы не использовать простые функции .Не судите строго это мой первый язык программированияесли php твой первый язык и ты еще не написал на функциях какой-то готовый проект(блог, сайт, и тд), если ты еще многое не знаешь в php, путаешься в синтаксисе, то пока ооп тебе равно. ты сам потом к нему придешь, неизбежно.
Неуловимый Джо — персонаж некогда распространенного онигдота, иносказательно обозначающий нечто, известное или распространенное на уровне легендарности, но по сути дела, никому на йух не нужное.(c) lurkmore.ru
Анекдот
Городок в западно-американской степи. Салун. За столом сидят два ковбоя, местный и приезжий, и пьют виски. Вдруг по улице кто-то проносится на огромной скорости, паля во все стороны из револьверов. В салуне никто и ухом не ведёт. Приезжий местному:
— Билл?
— Да, Гарри?
— Что это было, Билл?
— Это был Неуловимый Джо , Гарри.
— А почему его зовут Неуловимым Джо , Билл?
— Потому что его никто ещё не поймал, Гарри.
— А почему его никто ещё не поймал, Билл?
— Потому что он нафиг никому не нужен, Гарри.
304 Not Modified — сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела.
class Http_Request {
/**
* Возвращает TRUE, если дата (обычно документа) $data является устаревшей
* по отношению к HTTP заголовку If-Modified-Since.
*
* @param $date DateTime
* @return boolean
*/
public static function IfModifiedSince(DateTime $date)
{
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
$if_modified_since = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($if_modified_since && $if_modified_since >= $date->getTimestamp())
{
return false;
}
}
return true;
}
//....
}
// на уровне контроллера
// дата не изменилась - отдаем 304 заголовок, браузер возьмет страницу из кэша
if (!Http_Request::IfModifiedSince($advert->getLastModifiedDate()))
{
$this->getResponse()->setHttpStatusCode(304);
exit;
}
// дата была изменена - ставим заголовок Last-Modified с актуальной датой статьи
$this->getResponse()->setHeader('Last-Modified', $advert->getLastModifiedDate()->formatHttpDate());
$this->getResponse()->setHeader('Cache-Control', 'no-cache, must-revalidate');
/**
* Очищает массив от пробелов и слэшей.
*
* @param array
* @return array
*/
private static function clearData(&$in)
{
if ($in && is_array($in)) {
foreach ($in as $key => $value) {
if (is_array($value)) {
self::clearData($in[$key]);
} else {
$value = trim($value);
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
$in[$key] = $value;
}
}
}
return $in;
}