[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MVC
johniek_comp
Подключаю шаблон например вот так:
<?php
defined('MEX') or die("Нет доступа");

class user extends route
{
public function index()
{
$data = array();
if(isset($_POST['data']))
{
$data['result'] = $_POST['data'];
}
View::Factory('user', $data); // вот он
}

таким образом:
<?php
defined('MEX') or die("Нет доступа");
class View
{
public static function Factory($view, $data)
{
$file = $_SERVER['DOCUMENT_ROOT'] .'/views/view_'.$view.'.php';
if(!file_exists($file))
{
engine :: NotFound();
}
else
{
extract($data);
include_once $file;
}
}
}


Вопрос: как грамотно сделать нормальный вид?

т.е.
header

content

footer

а при подключении вида, дергать только content

мысли:
сделать через буферизацию...

поделитесь своими мыслями, пожалуйста!



Спустя 3 минуты, 7 секунд (25.03.2012 - 19:58) Игорь_Vasinsky написал(а):
использовать файловый кэш? для header и footer

Спустя 6 минут, 28 секунд (25.03.2012 - 20:04) johniek_comp написал(а):
Игорь_Vasinsky
это ты с yii пример взял? :D :D :D

А вот скажем так:
<html>
<head>
<script
src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div
class="content">
<?=
$content?>
</div>
</body>
</html>


что бы все в одной файле было, а я переменные дергал только

Спустя 6 минут, 53 секунды (25.03.2012 - 20:11) Игорь_Vasinsky написал(а):
нет. так много цмсок делает.

и что? у тя и title и остальные мета теги одинаковые будут?

Спустя 7 минут, 55 секунд (25.03.2012 - 20:19) johniek_comp написал(а):
Игорь_Vasinsky
ага, не подумал, линк не дашь где можно этот кэш покурить?

Спустя 1 минута, 33 секунды (25.03.2012 - 20:21) Игорь_Vasinsky написал(а):
нет. линка нет.


Спустя 2 минуты, 30 секунд (25.03.2012 - 20:23) Игорь_Vasinsky написал(а):
но смысл простой.

при формировании страницы - записать в файл её и дергать этот файл, а не таблицы из БД.

обновлять этот файл при изменении контента.

Опять же - если есть мониторинг чего либо на странице (счетчики, вывод самых читаемы новостей и т.д.) - это остаётся так же на динамике.

Спустя 5 минут, 53 секунды (25.03.2012 - 20:29) johniek_comp написал(а):
Игорь_Vasinsky
так ты говоришь про оптимизацию БД, через кэширование. это уж я сам напишу когда буду сам сайт делать, а это пока ядро. ты наверно не понял вопроса, сейчас напишу код 5 мин.

Спустя 1 минута, 59 секунд (25.03.2012 - 20:31) Игорь_Vasinsky написал(а):
нет я не говорю про оптимизацию БД, я говорю что если нет изменений контента на странице - не зачем дёргать БД для каждого юзера, т.е. этот момент можно обойти.

Спустя 7 минут, 36 секунд (25.03.2012 - 20:39) YVSIK написал(а):
Хм ?? :huh: я решил этот вопрос так
написал неболшую функцию и подставляю из базы названия страничек и прочие мета теги

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

 /*ф вывод названий страниц (функция OutTitle )*/
function OutTitle($name_page)
{
$result = mysql_query("SELECT`titul`,
`meta_d`,
`meta_k`
FROM
`name`
WHERE
`pade` ='
$name_page'");
$row = mysql_fetch_assoc($result);
return $row;
}

:) пример конечно как Игорь говорит дергается база и что с того?
писать отделно тхт файл? вот об этом я не думал чтож по случаю попробую
а в базе меня вполне устраивает очень даже легко потом чтобы-то нибыло правит на стадии редактирования если все дописано то вполне возможно перенести и на тхт файл и или ещё как ;)

Спустя 2 минуты, 17 секунд (25.03.2012 - 20:41) YVSIK написал(а):
а да,, осталость только подставлять на главном ТПЛ-е сами выводы так

 <meta name="keywords" content="<?php echo $arr['meta_k'] ?>">
<
meta name="description" content="<?php echo $arr['meta_d'] ?>">

<
title><?php echo $arr['titul'] ?></title>

Спустя 1 минута, 25 секунд (25.03.2012 - 20:42) Игорь_Vasinsky написал(а):
Цитата
дергается база и что с того?
писать отделно тхт файл?

а ты типо разницы не видишь?

1. динамически формировать страницу используя разные таблицы БД, делая запрос или несколько запросов
2. получить файл в строку и вывести.

Ювсик, а как твоя функция будет работать с БД если переменными коннект и выбор БД определён?

Спустя 2 минуты, 6 секунд (25.03.2012 - 20:44) johniek_comp написал(а):
Цитата
не зачем дёргать БД для каждого юзера, т.е. этот момент можно обойти.

так это и есть оптимизация.

ну вот что написал:
Свернутый текст
<?php
defined('MEX') or die("Нет доступа");
class View
{
public static function Factory($view, $data)
{
$file = $_SERVER['DOCUMENT_ROOT'] .'/views/view_'.$view.'.php';
if(!file_exists($file))
{
engine :: NotFound();
}
else
{
extract($data);
ob_start();
include_once $file;
$content = ob_get_contents();
ob_end_clean();

ob_start();
include_once $_SERVER['DOCUMENT_ROOT'] .'/views/BASIC.php';
$view = ob_get_contents();
ob_end_clean();
echo $view;
}
}
}

реализация оставляет желать лучшего, вот пришел за советом
в данном случае подключаемый вид
<form action="" method="POST" />
<input
type="text" name="data"><br>
<input
type="submit">
</form><br>
<?php
echo isset($result) ? $result : null; ?>


а views/BASIC.php
<h3>Верх!</h3>
<?php
echo $content; ?>
<h3>
Низ</h3>


вот получается
user posted image

а надо динамически это все держать

Спустя 1 минута, 48 секунд (25.03.2012 - 20:46) YVSIK написал(а):
Игорь_Vasinsky
ну вопервых нужна будет только одна переменная в которую я складываю в массив
и уже из массива выбираю
вот
// это сответствие названия страниц (массив)
$hame_p = array (
1 =>HOME, //MVC-CMV
3 =>ADVERTISING, //РЕКЛАМА
2 =>LINKSM, //MySQL-PhpMyAdmin
4 =>UBUNTA, //Убунта
5 =>SERVERS, //Сервер-VirtualHost
7 =>CHUMI, //chumikan
6 =>APACHS //Аpache2 - РНР-5
);
$name = $_GET['page']; // берем из урла № страницы!
// достать нужный элемент по значению

$two = $hame_p[$name];
/*получаем массив значений из базы! для нужной страницы*/
//при помощи своей функции!!


$arr = OutTitle($two);
/* тут добавить оператор иф чтоб по дефоту небыло нотисов на
будущее! */

ну и не показаны как определены константы но они есть уже к конфиге !!

Спустя 2 минуты, 56 секунд (25.03.2012 - 20:49) YVSIK написал(а):
Игорь_Vasinsky дык сделай отделню табличку в базе и всего-то
зачем делать все в разных местах?
Цитата
1. динамически формировать страницу используя разные таблицы БД, делая запрос или несколько запросов

все это работает тут и справляется

Спустя 3 минуты, 15 секунд (25.03.2012 - 20:52) Игорь_Vasinsky написал(а):
ды ты говоришь про свой 2х страничный сайт в бд которого держишь только мета теги, а я тебе про ёмкий ресурс со множеством динамичного контента.

1. "статические" страницы
2. материал c комментариями
3. сами кометарии
4. товары интернет магазина

и много е другое, где есть смысл использования ФК.

вообще не понял что ты сказал ээтим кодом.

вообщем я не въехал в тему - всем спасибо за внимание.

с 2мя гениями MVC уж спорить не буду.

Спустя 1 час, 2 минуты, 16 секунд (25.03.2012 - 21:55) Invis1ble написал(а):
johniek_comp
ты ж PHP-ниндзя, посмотри как это делается в твоей любимой кохане
да, и почитай что такое factory

Спустя 9 минут, 41 секунда (25.03.2012 - 22:04) johniek_comp написал(а):
Invis1ble
зачем мне читать про фабрику если я её не буду применять, ибо грешно сие содияние

Спустя 11 минут, 52 секунды (25.03.2012 - 22:16) TMake написал(а):
johniek_comp тривиально, но направление верное.
Пересмотри что бы шаблоны можно было гибко менять.

Спустя 9 минут, 24 секунды (25.03.2012 - 22:26) johniek_comp написал(а):
stepan
единственный поддержал с ювсиком, спасибо!
я уже написал, только один момент пугает
Свернутый текст
<?php
defined('MEX') or die("Нет доступа");
class View extends setting
{
public static function Factory($view, $title, $data)
{
$file = $_SERVER['DOCUMENT_ROOT'] .'/views/view_'.$view.'.php';
if(!file_exists($file))
{
engine :: NotFound();
}
else
{
extract($data);
ob_start();
include_once $file;
$content = ob_get_contents();
ob_end_clean();
// ГОВНОКОД!
ob_start();
include_once $_SERVER['DOCUMENT_ROOT'] .'/views/BASIC.php';
$view = ob_get_contents();
ob_end_clean();
echo $view;
}
}
}

контроллер
Свернутый текст

<?php
defined('MEX') or die("Нет доступа");

class user extends route
{
public function index()
{
$data = array();
if(isset($_POST['data']))
{
$data['result'] = $_POST['data'];
}
View::Factory('user', 'Вход', $data); // второй параметр это титл нужной страницы
}


}


осн. шаблон
<title>MVC framework: <?php echo $title; ?></title>
<h3>
Верх!</h3>
<?php
echo $content; ?>
<h3>
Низ</h3>


получаю такой title

<title>MVC framework: Вход</title>


собсно можно добавлять любые параметры

Спустя 4 минуты, 23 секунды (25.03.2012 - 22:30) johniek_comp написал(а):
Да эта штука гибче и лучше коханы выходит!!!

Спустя 3 минуты, 34 секунды (25.03.2012 - 22:33) YVSIK написал(а):
Цитата (johniek_comp @ 25.03.2012 - 23:30)
Да эта штука гибче и лучше коханы выходит!!!

а теперь переведи что и как гибче

Спустя 1 минута, 24 секунды (25.03.2012 - 22:35) johniek_comp написал(а):
YVSIK
я тебе могу по скайпу рассказать если надо

Спустя 33 секунды (25.03.2012 - 22:35) TMake написал(а):
johniek_comp для шаблона достаточно передавать 2 параметра (название_шаблона, массив_переменных), 3 необязательный параметр (проверка_на_возвращения_результата[по умолчанию не возвращать])

в самом шаблоне бы организовал вывод через $this->qwe;
а в классе View искал бы переменные через __get()

Спустя 22 минуты, 54 секунды (25.03.2012 - 22:58) johniek_comp написал(а):
stepan
по подробнее, желательно кодом smile.gif

Спустя 5 минут, 20 секунд (25.03.2012 - 23:04) Invis1ble написал(а):
ТС видимо пытается переизобрести кохановский View, наверное потому что код содержит Фатальную Ошибку

Спустя 59 секунд (25.03.2012 - 23:05) m4a1fox написал(а):
johniek_comp
ИМХО! Глупо вот это

class user extends route
{
public function index()
{
$data = array();
if(isset($_POST['data']))
{
$data['result'] = $_POST['data'];
}
View::Factory('user', 'Вход', $data); // второй параметр это титл нужной страницы
}


}


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

class user extends route
{
public function index()
{
$data = array();
$data['result'] = $_POST['data'];
View::Factory('user', 'Вход', $data); // второй параметр это титл нужной страницы
}
}



Спустя 29 секунд (25.03.2012 - 23:05) Invis1ble написал(а):
Цитата
Да эта штука гибче и лучше коханы выходит!!!

какая штука и в каком месте, интересно?

Спустя 4 минуты, 10 секунд (25.03.2012 - 23:09) m4a1fox написал(а):
Но я бы не стал пользоваться статикой как шаблоном. Не легче ли его переопределить из route и там его написать а потом просто вызывать как обычно через $this->?

Спустя 1 минута, 6 секунд (25.03.2012 - 23:10) johniek_comp написал(а):
Invis1ble
в кохану с первого дня написание этой штуки не заглядывал smile.gif
m4a1fox
угу, перепишу, только завтра уже smile.gif

Спустя 1 минута, 23 секунды (25.03.2012 - 23:12) m4a1fox написал(а):
johniek_comp
Цитата
угу, перепишу, только завтра уже

Ты так удачи.. smile.gif Чё.

Спустя 52 секунды (25.03.2012 - 23:13) Invis1ble написал(а):
Если не заглядывал - почему пишешь, что гибче? Лишь бы ляпнуть?

Спустя 14 секунд (25.03.2012 - 23:13) johniek_comp написал(а):
m4a1fox
у меня __autoload стоит, на нем все держится, так удобнее

Спустя 1 минута, 10 секунд (25.03.2012 - 23:14) johniek_comp написал(а):
Invis1ble
разочаровался я в кохане, пробую свою написать smile.gif как бы это ужасно не звучало! unsure.gif blink.gif

Спустя 2 минуты, 6 секунд (25.03.2012 - 23:16) Invis1ble написал(а):
Круто. Как напишешь - обязательно покажи ее миру.

Спустя 7 минут, 12 секунд (25.03.2012 - 23:23) m4a1fox написал(а):
johniek_comp
Цитата
у меня __autoload стоит, на нем все держится, так удобнее

Цитата
Лишь бы ляпнуть?

Спустя 1 минута, 39 секунд (25.03.2012 - 23:25) Invis1ble написал(а):
johniek_comp
О, забыл спросить.
По каким причинам разочаровался?

Спустя 6 минут (25.03.2012 - 23:31) m4a1fox написал(а):
johniek_comp
Давай так.... если ты сейчас логически докажешь необходимость вот этой строки
Цитата
у меня __autoload стоит, на нем все держится, так удобнее

Я обещаю, что больше ни одного плохого слова в твой адресс не скажу.

Спустя 7 минут, 34 секунды (25.03.2012 - 23:39) caballero написал(а):
Цитата
О, забыл спросить.
По каким причинам разочаровался?

не хватило знаний или терпения разобратся
и как все новички по наивности решил что написать свое будет проще и работать оно будет лучше

Спустя 43 минуты, 3 секунды (26.03.2012 - 00:22) m4a1fox написал(а):
Ну собственно о чем я и говорил!

Спустя 13 часов, 12 минут, 39 секунд (26.03.2012 - 13:34) johniek_comp написал(а):
m4a1fox
Invis1ble
Цитата
не хватило терпения разобратся
и как все новички по наивности решил что написать свое будет проще и работать оно будет лучше


Спустя 40 минут, 31 секунда (26.03.2012 - 14:15) m4a1fox написал(а):
johniek_comp
Ну собственно кто бы сомневался. Я тут так, о морали говорю. Лично мне не импонирует что-то говорить/писать когда я в этом не разбираюсь. откровенно говоря меня такие люди немножко не нравятся smile.gif (напомню: на форуме оскорбления других участников запрещены, поэтому выразить свою мысли в полном объеме русского языка увы не получается), из-за этого могу сделать вывод что ТС, вы просто не разбираетесь в этом... то есть по сути вы не нас обманываете, а в первую очередь - себя. Перед самим собой не стыдно? wink.gif

Спустя 1 минута, 21 секунда (26.03.2012 - 14:16) Игорь_Vasinsky написал(а):
да какая разница, ну нравиться ему думать и говорить что он знает - пусть.

Спустя 3 минуты, 19 секунд (26.03.2012 - 14:19) YVSIK написал(а):
Цитата (Игорь_Vasinsky @ 26.03.2012 - 15:16)
да какая разница, ну нравиться ему думать и говорить что он знает - пусть.

ну наконецто НАКОНЕЦ!
мудрые слова говоришь!!
ему не много-бы такту и все было-бы пучком .
wink.gif

Спустя 3 минуты, 51 секунда (26.03.2012 - 14:23) Игорь_Vasinsky написал(а):
Свернутый текст
просто чреваты подсказки от таких подсказчиков.

Спустя 24 минуты, 38 секунд (26.03.2012 - 14:48) m4a1fox написал(а):
YVSIK
Да как бы разницы лично мне нет ни какой... не люблю когда бахваляться попусту.

Спустя 13 минут, 24 секунды (26.03.2012 - 15:01) johniek_comp написал(а):
m4a1fox
так а в чем же я не разбираюсь, уточни

Спустя 5 минут, 8 секунд (26.03.2012 - 15:06) m4a1fox написал(а):
johniek_comp
О мой мозг. Секунду.

Спустя 2 минуты, 20 секунд (26.03.2012 - 15:09) m4a1fox написал(а):
Вот такой пост
Цитата

ИМХО! Глупо вот это


class user extends route
{
       public function index()
    {
            $data = array();
   if(isset($_POST['data']))
   {
    $data['result'] = $_POST['data'];
   }
   View::Factory('user', 'Вход', $data); // второй параметр это титл нужной страницы
        }
       
       
    }


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


class user extends route
{
    public function index()
        {
            $data = array();
            $data['result'] = $_POST['data'];
            View::Factory('user', 'Вход', $data); // второй параметр это титл нужной страницы
        }
}

Твой ответ был
Цитата

m4a1fox
у меня __autoload стоит, на нем все держится, так удобнее


Я ответил тебе
Цитата

johniek_comp
Давай так.... если ты сейчас логически докажешь необходимость вот этой строки
Цитата
у меня __autoload стоит, на нем все держится, так удобнее

Я обещаю, что больше ни одного плохого слова в твой адресс не скажу.


И еще раз... сможешь ответить и логически пояснить к чему ты сказал что у тебя __autoload стоит? Я обещаю официально к тебе больше никогда не придираться и считать тебя не просто любителем почесать язык, а настоящим ООП ПРОГРАММИСТОМ.

Спустя 5 минут, 29 секунд (26.03.2012 - 15:14) johniek_comp написал(а):
m4a1fox
Кто сказал что я программист? Мне просто нравится это, ни какой цели не преследую...

Цитата
Но я бы не стал пользоваться статикой как шаблоном. Не легче ли его переопределить из route и там его написать а потом просто вызывать как обычно через $this->?


перечитай! вот тебе и autoload smile.gif

Спустя 3 минуты, 13 секунд (26.03.2012 - 15:17) m4a1fox написал(а):
johniek_comp
Цитата
Кто сказал что я программист? Мне просто нравится это, ни какой цели не преследую...

Вопрос снимается.
Цитата

перечитай! вот тебе и autoload

Но это мой ответ... А твой я так и не увидел. smile.gif

Спустя 3 минуты, 2 секунды (26.03.2012 - 15:21) johniek_comp написал(а):
m4a1fox
убойный аргумент "не легче" ! как меня спасет $this->, ну пишу я через статику и че? разница в view::factory и $this->??? т.к. на форуме маты запрещены, то позвони мне на скайп я тебе популярно объясню про статику, про программистов и вообще про жизнь smile.gif

как это не твой пост? посан ты че гонишь?

Спустя 11 минут, 4 секунды (26.03.2012 - 15:32) YVSIK написал(а):
Свернутый текст
щя ) все)) по домам!
разошлись в разные стороны ) тут не мето выяснения кто и что кому сказал

тут для ответов и советов и поддержания в своих начинаниях, а не для выяснений отношений, как таковых,

Спустя 20 минут, 17 секунд (26.03.2012 - 15:52) m4a1fox написал(а):
вопросов больше не имею smile.gif

Вот ты хоть тресни я не понимаю. Причем тут твой ответ что у тебя __autoload();?


_____________
user posted image
Быстрый ответ:

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