Jump to content

alexandr.coder

User
  • Posts

    66
  • Joined

  • Last visited

Everything posted by alexandr.coder

  1. Так? <?php require_once(SYSTEM."/classes/controller.php"); require_once(SYSTEM."/classes/model.php"); class Framework_Core{ protected $load; protected $registry; protected $error; public function __construct(){ //Подключение обработчика ошибок require_once (SYSTEM."/classes/error.php"); //Инсцилизация системы безопасности require_once (SYSTEM."/classes/security.php"); $this -> security = new Framework_Security(); //Инсцилизация реестра require_once (SYSTEM."/classes/registry.php"); $this -> registry = new Framework_Registry(); //Инсцилизация загрузчика require_once (SYSTEM."/classes/loader.php"); $this -> load = new Framework_Loader(); //Проверка всех данных пользователя перед входом $this -> security -> enter(); //Мини-роутинг $route = explode("/", $_SERVER['REQUEST_URI']); if($route[1] != "") $controller = $route[1]; else $controller = $this -> registry -> get_config("route", "controller"); if(isset($route[2])) $action = $route[2]; else $action = $this -> registry -> get_config("route", "action"); if(isset($route[3])) $data = array_slice($route,3); else $data = array(); echo "application $controller.$action<br>"; if(!file_exists(SYSTEM."/application/controllers/".$controller.".php")) die(); require_once(SYSTEM."/application/controllers/".$controller.".php"); $controller = "Framework_Controller_".$controller; $front_controller = new $controller($data); $front_controller -> $action(); } } ?> Есть ещё такой вопрос: можно ли расширять Framework_Core классами Framework_Security, Framework_Registry, Framework_Loader если в классе Framework_Core создаются объекты этих классов? //Инсцилизация системы безопасности require_once (SYSTEM."/classes/security.php"); $this -> security = new Framework_Security(); //Инсцилизация реестра require_once (SYSTEM."/classes/registry.php"); $this -> registry = new Framework_Registry(); //Инсцилизация загрузчика require_once (SYSTEM."/classes/loader.php"); $this -> load = new Framework_Loader();
  2. Структура такая: index.php - точка входа system classes core.php registry.php loader.php controllers models views ... Объект класса Core создается в самом начале исполнения приложения - в index.php. <?php error_reporting(E_ALL); if ( !version_compare ( PHP_VERSION , '5.0.0' , '>=' )) die(); define("SYSTEM","system"); require_once(SYSTEM."/classes/core.php"); $core = new Core(); $core -> run(); ?> Он подключает ядро, создает новый объект-ядро и запускает приложение. С самого начала объекта класса Controller небыло вообще. В нем не было необходимости. Он служил как шаблон, который должен расширяться контроллерами. Но подумав, что объект этого класса надо создать я сделал это в самом конце метода-загрузчика. $this -> load = new Loader(); $this -> registry = new Registry(); $this -> registry -> load_config(); if(stristr($_SERVER['REQUEST_URI'],"select")) die(); if(stristr($_SERVER['REQUEST_URI'],"union")) die(); if(stristr($_SERVER['REQUEST_URI'],"order")) die(); if(stristr($_SERVER['REQUEST_URI'],"char")) die(); if(stristr($_SERVER['REQUEST_URI'],"where")) die(); if(stristr($_SERVER['REQUEST_URI'],"from")) die(); if(stristr($_SERVER['REQUEST_URI'],"drop")) die(); $url_fragments = explode("/", $_SERVER['REQUEST_URI']); if($url_fragments[1] != "") $controller = $url_fragments[1]; else $controller = $this -> registry -> get_config_item("default","controller"); if(isset($url_fragments[2])) $action = $url_fragments[2]; else $action = $this -> registry -> get_config_item("default","action"); if(isset($url_fragments[3])) $data = array_slice($url_fragments,3); else $data = array(""); // глухо // $front_controller = new Controller(): if(!file_exists(SYSTEM."/application/controllers/".$controller.".php")) die(); require_once(SYSTEM."/application/controllers/".$controller.".php"); $controller = new $controller($data); $controller -> $action(); Т.е. после содания объектов $this -> load и $this -> registry.
  3. А это когда иммено? Когда подключается файл с контроллером? Да. Что-то типа этого.
  4. class Core{ protected $load; protected $registry; function run() { $this -> load = new Loader(); $this -> registry = new Registry(); $this -> registry -> load_config(); $url_fragments = explode("/", $_SERVER['REQUEST_URI']); if($url_fragments[1] != "") $controller = $url_fragments[1]; else $controller = $this -> registry -> get_config_item("default","controller"); if(isset($url_fragments[2])) $action = $url_fragments[2]; else $action = $this -> registry -> get_config_item("default","action"); if(isset($url_fragments[3])) $data = array_slice($url_fragments,3); else $data = array(""); if(!file_exists(SYSTEM."/application/controllers/".$controller.".php")) die(); require_once(SYSTEM."/application/controllers/".$controller.".php"); $controller = new $controller($data); $controller -> $action(); } }
  5. Нас все же больше, чем пара. А кроме компьютеров занимаюсь ещё спортом - плаваю.
  6. Я выяснил, что проблема начинается ещё на уровне класса Controller <?php class Controller extends Core{ protected $url_data = array(); public function __construct($data = array()) { $this -> url_data = $data; } function view($view) { $this -> load -> view($view); } } ?> Notice: Undefined property: site::$load in S:\home\dev\www\system\classes\controller.php on line 14 Fatal error: Call to a member function view() on a non-object in S:\home\dev\www\system\classes\controller.php on line 14 Почему-то Controller не наследует класс Core
  7. Есть классы: Core, Controller, Loader и site. Класс Core наследует Controller, класс Controller наследует site. Объект класса Loader создается в классе Core. $this -> load = new Loader(); Но при попытки вызова метода класса Loader в классе site: $this -> load -> view("header"); ,выдается такая ошибка: Notice: Undefined property: site::$load in S:\home\dev\www\system\application\controllers\site.php on line 12 Call to a member function view() on a non-object in S:\home\dev\www\system\application\controllers\site.php on line 12 По идее объект $this -> load должен быть доступен в классе site, но происходит какая-то ошибка.Помогите.
  8. В таблице post_cat я удалил поле post_cat_id. В том и дело, что post_cat не существует. В таблице post_cat содержатся номера категорий. Например: 3 | 1 5 | 1 1 | 2 4 | 3 6 | 3 Значит что запись с номером 1 принадлежит категориям 3 и 5, запись с номером 2 к 1 категории, запись 3 - к 4 и 6. По номера записи надо получить номера категорий, а по ним из таблицы с категориями получить имена. Это можно сделать в несколько запросов: $query = mysql_query("SELECT * FROM post LIMIT 1,10"); if(mysql_num_rows($query)>0){ while($post = mysql_fetch_assoc($query)){ // здесь по $post['id'] с помощью 2 запросов вытащить имена категорий. $post_list[] = $post; } return $post_list; } Но если сделать так то на генерацию части страницы с постами уйдут (10*2)+1=21 запрос. А это по-моему много. Если прибавить остальное то думаю в суме получится 25-30 запросов.
  9. Есть три таблицы: category post post_cat Нужно сделать запрос на выборку из таблицы post так, чтобы в результате присутствовало ещё одно поле: post_cat. И в этом поле должны содержатся имя или имена категорий. Можно ли сделать такое или нет? Если да, то как?
  10. 1.В папке css стиль и изображеия. 2.Адрес (сейчас вида http://dev/controller/action/1/2/3) Разделяется с помощью функции explode(). Первый элемент - контроллер, второй - действие, третий и далее - данные. Так же есть контроллер и действие по умолчанию.
  11. Я делаю что-то типа мини-фреймвока для средних сайтов, где большие навороты не нужны. Сделал основу, теперь хочу сделать на нем блоговый движок. Чтобы обрабатывался запрос нужно все запросы переадресовывать на index.php, где адрес разделяется на контроллер, действие и массив с данными. Но потом натолкнулся на эту проблему. Был ещё такой вариант без .htaccess. Но все адреса выглядели бы так: http://dev/index.php/controller/action/1/2/3. Но согласитесь, что такие адреса некрасивые. Вот и сделал с .htaccess/
  12. Сейчас сервер переадресует все запросы на index.php. Надо сделать исключение для папки style.
  13. Не жесть. А просто вы не прочитали целиком. Все запросы, исключая папку style, должны переправлятся на index.php, а этого не происходит.
  14. Файл .htaccess: RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] Такая проблема. Я сделал файл .htaccess для переадресации всех запросов на index.php для обработки. Но когда я сделал так, что сценарий должен отображать html страницу с подключенным css файлом стиль не сработал. Для интереса я переместил его в тег style. Стиль сработал, но фоны или другие указанные файлы не загрузились. Я подумал,что файл .htaccess перенаправляет вообще все запросы. Я попытался создать ещё одно правило по примеру, но не получилось. Вот код: RewriteCond /style/%{REQUEST_FILENAME} -f RewriteRule (.*) /style/$1 [L] Незнаю, что не правильно. Помогите.
  15. Всё ясно. Тема закрыта
  16. А аналог этой функции в php есть? Это же вроде js функция.
  17. alexandr.coder

    Время

    Например существует две функции: msg() и do(). Функция msg() выводит предупреждение, а функция do() выполняет нужное действие. Между выполнение этих функций должно пройти какое-то время чтобы пользователь смог прочитать сообщение. Есть ли функция позволяющая сделать это? Искал но не нашел.
  18. Странно почему на моё предпоследнее сообщение ответили сразу.
  19. Ждал, ждал, да сам сделал.
  20. index.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Информационный сайт</title> <link href="style/common.css" rel="stylesheet" type="text/css" /> </head> <body><div id="page"> <div id="header"> <h1>Название сайта</h1> <h2>Краткое описание сайта</h2> </div> <div id="menu"> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Услуги</a></li> <li><a href="#">Портфолио</a></li> <li><a href="#">Продукты</a></li> <li><a href="#">@</a></li> </ul> </div> </div></body> </html> css файл: /* Page settings */ * {margin:0; padding:0; font-family:Arial, Helvetica, sans-serif;} a {text-decoration:none;} /* Page */ #page {width:70%; margin:15px auto;} /* Header */ #header {padding:20px; margin-bottom:15px; background-color:#3BB8EA;} #header h1 {font-size:30px;} #header h2 {font-size:15px;} /* Menu */ #menu {background-image:url(1.png);} #menu ul li {height:30px; display:inline; padding:4px; font-size:20px;} #menu ul li:hover {background-image:url(2.png);} #menu ul li a {color:#FAFAFA;} Проблема: есть два фона для меню размером 20х30 пикселов. Значит меню должно быть высотой 30 пикселов. Но если задать высоту параметром height, то пункты меню будет вверху, а не по центру. Если исполользовать padding то, отступ в 4 пиксела применяется только к бокам. Но самое странное то, что при наведение padding срабатывает. Если применить фон так: #menu {background-image:url(1.png);} #menu ul li {background-image:url(1.png); height:30px; display:inline; padding:4px; font-size:20px;} #menu ul li:hover {background-image:url(2.png);} #menu ul li a {color:#FAFAFA;} ,то получается так, что тоже не очень хорошо: Помогите решить эту проблему.
  21. alexandr.coder

    include

    LunatiK, спасибо! Сделал! Тема закрыта.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy