Deert
Новичок
Всем Здравствуйте. Я здесь новичок и это мой первый пост )))) Так вот. написал сайт, но не понимаю как лучше разделить логику и представление. Кто сможет помочь - помогите.
И выкладываю код файла system.php
PHP:
<?php
//Устанавливаем уровень ошибок и стратуем сессии
error_reporting(-1);
session_start();
ob_implicit_flush(0);
//Создаем константы с путями
define("BASE_DIR", "http://" . $_SERVER['HTTP_HOST'] . "/"); //Индексный путь
define("TMP_DIR", BASE_DIR . "template/"); //Путь к папке с шаблоном
define("SYS_DIR", BASE_DIR . "system/"); //Путь к системной папке
define("SYS_KEY", true); //Создаем ключ для того чтоб к чичтемным файлам не обратились на прямую
$mod = trim(htmlspecialchars($_GET['mod']));
//Подключаем файлы настроек. Именно соеденяемся с БД, настройки сайта(title, keywords, max file size uploading и т.д.),
//и файл в котором к определенной странице подключается орпделенные скрипты или стили
require './system/data/db.php';
require './system/data/config.php';
require './system/library/scripts.php';
//Объявляем функция для загрузки классов
function __autoload ($class)
{
if($class = "index")
{
$class_dir = "system/system.php";
}
else
{
$class_dir = 'system/classes/' . $class . '.class.php';
}
if(!file_exists($class_dir))
{
exit ("На сайте отсутсвует класс: <b>" . $class . "</b>. Он необходим для работы скрипта.");
}
else
{
require './system/classes/' . $class . '.php';
}
}
$index = new index; //Создаем экземпляр класса index
$snipet = new snippets; //Создаем экземпляр класса snippets
$engine = new engine; //Создаем экземпляр класса engine
$template = new template; //Создаем экземпляр класса template
$main_tpl = $index->load_template("main.tpl", TMP_DIR); //Перемменная с главным шаблоном сайта
//Проверяем если человек авторизован не забанен ли он? и дан ли ему доступ к просмтору откл. сайта?
if(isset($_COOKIE['user_hash']))
{
$hash = mysql_real_escape_string($_COOKIE['user_hash']);
$select_user = mysql_query("SELECT `banned` FROM `users` WHERE `hash`='". $hash ."' and `public`='1'") or die("Произошла MySQL ошибка: " . mysql_error());
if(mysql_num_rows($select_user) > 0)
{
$group = $snipet->user_group($_COOKIE['user_hash']);
if($group['banned'] == 1)
{
exit($index->load_template("banned.tpl", TMP_DIR));
}
if($config['work_site'] == "off")
{
if($group['view_offsite'] == 0)
{
exit($config['work_offsite_text']);
}
}
$user = true;
}
else
{
if($config['work_site'] == "off")
{
exit($config['work_offsite_text']);
}
$user = false;
}
}
if(isset($mod))
{
switch($mod)
{
case "news":
$page = $engine->news();//Модуль показа новостей
break;
case "category":
$page = $engine->category(); //Модуль показа категории
break;
default:
$page = $engine->GetModul(); //Если указан иной модуль то ищем в папке с модулями файл, с таким именем как у модуля
break;
}
}
else
{
$page = $engine->index();
}
//проверяем, были ли ошибки в результате выполнения скрипта?
if($_SESSION['engine_error'][0])
{
exit($_SESSION['engine_error'][0]);
}
echo strtr($main_tpl, array(
'{content}' => $_SESSION['content'],
'{poll}' => $template->poll(),
'{popnews}' => $template->popularnews(),
'{search}' => $template->search(),
'{login}' => $template->login(),
'{arhives}' => $template->arhiv(),
'{title}' => $_SESSION['title'],
'{engine_scripts}' => $_SESSION['engine_scripts']
)
);
PHP:
<?php
if(!defined('SYS_KEY'))
{
exit('Несанкционированный доступ к файлу');
}
class index {
public function load_template($tpl, TMP_DIR)
{
$tpl = TMP_DIR . $tpl;
if(!file_exists($tpl))
{
$_SESSION['engine_error'][] = "Невозможно прочитать файл шаблона: <b>" . $tpl . "</b>";
$result = false;
}
else
{
$result = file_get_contents($tpl);
}
return $result;
}
}