[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: framework, загрузка страницы из шаблона
alc99vol
Добрый день!
Задался целью реализовать cms(для начала весьм незамысловатую), но застопорился на проектировании, а именно на след. проблеме:

хотелось бы, чтобы index.php выглядел как-то так:

index.php

<?php
include 'somepath/PageMngr.php';
$page = !empty($_GET['page'])?$_GET['page']:NULL;
$PgMngr=new PageMngr();
if($page)
$PgMngr->loadpage($page);
else
$PgMngr->loadpage('main');

дальше, шаблон страницы, template.html:

<html>
<!--некий html, описывающий вид, сюда подключаются стили, итд -->
<head>
<!--something-->
</head>
<body>

<!--something-->
<?php $PM->addcomponent('c_name1',"$PM->cur_page");?>
<?php
$PM->addcomponent('c_name2',"$PM->cur_page");?>
<!--Вот тут то собственно и неясно как лучше сделать, непонятное место N1
вроде как PM - ссылка на PgMngr (тот что в index.php)-->

....
</body>
</html>


дальше, собственно, класс PageMngr:

<?php
class
PageMngr{
function loadpage ($pname){
$this->$cur_page=$pname;
$PM=$this; //прокатит такое в пхп?
include 'somepath/template.html';
}
function addcomponent($c_name, $cur_page){
$path=$this->get_comp_path($c_name);
include "$path";
//компонент сам ответственен за загрузку необходимого для данной страницы контента, контент берет, скажем из БД, в зависимости от глобальной(для компонента)
//переменной $cur_page

}
}


уффф...простите за много кода, так уж вышло.
в этой реализации смущает то, что объект класса PageMngr доступен в шаблоне и, самое ужасное - в компонентах через $this, притом доступны все даже и private данные, что очень плохо. Где-то я явно не прав, подскажите, пожалуйста, что переделать.

P.S. вот только не надо в этой теме писать: используй mvc, зачем тебе ООП, используй уже готовые решения, сделай сайт на джумле итд))



Спустя 39 минут, 6 секунд (11.05.2011 - 12:15) T1grOK написал(а):
Цитата (alc99vol @ 11.05.2011 - 08:36)
вот только не надо в этой теме писать: используй mvc, зачем тебе ООП...

Использовать MVC в ООП никто не мешает. MVC - это модель проектирования, а ООП ( или процедурное программирование) подход к самому программированию.
Да считается плохим признаком когда вид "знает" о контроллере. Заведите дополнительные переменные, которые будут использоваться в виде.
Наиболее правильно использовать контроллер обработки и контроллер вывода(почти никогда и нигде такое не реализовывается), контроллер обработки отдаст необходимые переменные контроллеру вывода(вида), а тот уже возьмет эти переменные и подставит в шаблон.

Спустя 6 минут, 6 секунд (11.05.2011 - 12:21) Семён написал(а):
T1grOK
Ща тебя twin разорвёт

Спустя 55 минут, 9 секунд (11.05.2011 - 13:16) alc99vol написал(а):
T1grOK: я не имел ввиду что mvc и ооп друг другу противоречат, это просто перечисление, про mvc и ооп - это независимые пункты.
во-вторых, использование в виде дополнительных переменных никак не помешает использованию $this - он все равно будет определен и ссылаться будет туда куда не нужно, открывая разработчику модуля совсем не нужные ему данные, которые он может неправильно использовать и уронить всю систему.
про контроллеры - немного не уловил идеи, если не сложно - приведите, пожалуйста, пример с кодом.
Быстрый ответ:

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