PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (6): [1] 2 3 4 5 6 »

> Найдено сообщений: 88
Eazy-E Отправлено: 17 Октября, 2013 - 13:46:36 • Тема: Система "событий" в фреймворке - как реализовать? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1386
esterio +
спасибо за наводку, разобрался с диспетчером. просто много раз на него натыкался, но не понимал принципа действия. это то, что надо. благодарю!!!
Eazy-E Отправлено: 17 Октября, 2013 - 13:33:57 • Тема: Система "событий" в фреймворке - как реализовать? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1386
Теоретически я понимаю, что ко всем методам классов в фреймворке нужно обращаться через особый класс, который бы автоматом уведомлял другие модули об инстанцировании, но не могу четко реализовать это в виде кода.
(Добавление)
esterio по причине того, что в каждом контроллере придется дописывать кучу кода. а контроллер не один, и, скорее всего, в некоторых из них придется дублировать код.. что уже не хорошо.
Eazy-E Отправлено: 17 Октября, 2013 - 13:29:53 • Тема: Система "событий" в фреймворке - как реализовать? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1386
Здравствуйте уважаемые форумчане. Постановка задачи такова:
Нужно реализовать систему "событий", или, лучше сказать, "уведомлений", чтобы при вызове определенного экшена определенного контроллера, подключались какие-либо модули (плагины). Паттерн Observer мне не подходит.
Подскажите пожалуйста, какой шаблон программирования мог бы помочь мне решить данную проблему?
Заранее спасибо.
Eazy-E Отправлено: 24 Августа, 2013 - 19:34:48 • Тема: А как бы вы сделали? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1639
извините, что апаю старую тему.. но вопрос как бы актуален. можно ли считать такое решение говнокодом? Может кто нить подскажет шаблон проектирования, который мог бы решить проблему загрузки контроллеров-модулей в основной контроллер без редактирования исходников последнего...?
Eazy-E Отправлено: 26 Июня, 2012 - 10:31:23 • Тема: Сколько будет стоить написание скрипта? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 449
NOVI4OK72, все с вами ясно Улыбка
Eazy-E Отправлено: 26 Июня, 2012 - 08:20:21 • Тема: Сколько будет стоить написание скрипта? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 449
MisHel64, полностью разделяю вашу точку зрения.
Eazy-E Отправлено: 26 Июня, 2012 - 07:40:14 • Тема: Сколько будет стоить написание скрипта? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 449
Сейчас глянул API vk, в частности это:
http://vk[dot]com/developers.php?oid[dot][dot][dot]=groups[dot]isMember
В принципе, ничего сложного. Но цифры в опросе как минимум должны выражаться в долларах США Улыбка
Eazy-E Отправлено: 26 Июня, 2012 - 07:30:59 • Тема: Сколько будет стоить написание скрипта? • Форум: Вопросы новичков

Ответов: 10
Просмотров: 449
Указав такие веселые цены, вы явно не можете трезво оценить масштаб работы..
Eazy-E Отправлено: 25 Июня, 2012 - 20:57:46 • Тема: Несколько вопросов по memcache • Форум: Хранение данных, их вывод и обработка

Ответов: 2
Просмотров: 874
DeepVarvar пишет:
memcache != cache

Ну, я обобщил Улыбка Спасибо.
Eazy-E Отправлено: 25 Июня, 2012 - 14:51:10 • Тема: Несколько вопросов по memcache • Форум: Хранение данных, их вывод и обработка

Ответов: 2
Просмотров: 874
Надеюсь не ошибся веткой форума.
Вопрос первый. Как вывести названия и размер всех элементов, хранящихся в кэше?
Вопрос второй. Как полностью отчистить кэш?
Заранее благодарю за ответы.
Eazy-E Отправлено: 25 Июня, 2012 - 12:26:50 • Тема: написания своего форума.ООП • Форум: Объектно-ориентированное программирование

Ответов: 21
Просмотров: 4479
voskan пишет:
готовые варианты очень долго изучать если ты новичок в этом деле, пока поймешь логику посторения то уже ничего не захочется =Р


Дык, пока не поймете логику - ничего хорошего не выйдет. Зачем лезть в чужой код, если вы, судя по постам, не понимаете даже логику своего приложения (точнее сказать, вы не можете сформулировать и построить ее).

DlTA пишет:
<div><?=modules::run("class/method/prop1/prop2/...")?></div>
.....
<div><?=modules::run("class2/method2/prop1/prop2/...")?></div>


ИМХО в данном случае необходим Router, который будет получать некие параметры из УРЛ'а, обрабатывать их и передавать в соответствующий Controller.
А вообще, все нужно делать в три шага:
1. Сесть и описать ручкой на бумаге (или клавишами на компьютере) то, что вы хотите реализовать. Описать ядро вашего приложения.
2. Написать ядро приложения.
3. По мере необходимости расширять ядро.
Eazy-E Отправлено: 22 Июня, 2012 - 00:37:33 • Тема: CMS?! • Форум: Вопросы новичков

Ответов: 3
Просмотров: 148

Ха-ха я думал он исчез..
Eazy-E Отправлено: 21 Июня, 2012 - 19:15:07 • Тема: А как бы вы сделали? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1639
Да, со статикой проще конечно. Но все же интересует мнение о самой реализации.
Eazy-E Отправлено: 21 Июня, 2012 - 06:38:15 • Тема: А как бы вы сделали? • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1639
Всем доброго времени суток. Имеется вот такая MVC реализация:

PHP:
скопировать код в буфер обмена
  1.  
  2. class Controller{
  3.         function createPage() {
  4.                 $data = Model::loadPage();
  5.                 View::showPage($data);
  6.         }
  7. }
  8.  
  9. class Model{
  10.         function loadPage() {
  11.                 $data = array(
  12.                         'title'         => 'Тестовая страница',
  13.                         'date'          => '18 июня 2012 года',
  14.                         'author'        => 'Админ',
  15.                         'content'       => 'Содержание тестовой страницы',
  16.                         'template'      => 'test'
  17.                 );
  18.                 return $data;
  19.         }
  20. }
  21.  
  22. class View{
  23.         function showPage($data){
  24.                 echo $data['title'] . '<br>';
  25.                 echo $data['date'] . '<br>';
  26.                 echo $data['author'] . '<br>';
  27.                 echo $data['content'] . '<br>';
  28.                 echo $data['template'] . '<br>';
  29.         }
  30. }
  31.  
  32. $c = new Controller();
  33. $c->createPage();
  34.  


Что нужно? а нужно сделать проверку (в контроллере):

if($private == 1){
//...
}

то, подменить содержимое $data['content'] на нечто подобное: 'Только приватный просмотр!'. Естественно, до непосредственного вывода. Кто-то скажет, что нужно расширить класс Контроллера, и будет не прав. Ибо объект класса Controller уже создан, и заменить его на что-то другое нельзя. Вообще, будем отталкиваться от того, что этот код закрыт. Ну, если только не код контроллера. Как бы вы поступили? Я думаю, что так:

PHP:
скопировать код в буфер обмена
  1. class Controller{
  2.         function createPage() {
  3.                 $data = Model::loadPage();
  4.                 $privateContent = new privateContent();
  5.                 $data = $privateContent->make($data);
  6.                 View::showPage($data);
  7.         }
  8. }
  9.  
  10. class privateContent{
  11.         function make($data){
  12.                 $private = 1;
  13.                 if($private == 1){
  14.                         $data['content'] = 'Только приватный просмотр!!';
  15.                         return $data;
  16.                 }
  17.         }
  18. }


В принципе, все окей! Проблему мы решили. Но что, если исходник контроллера так же не доступен для редактирования? Наследование здесь не поможет, потому что экземпляр класса Controller уже создан и работает. Переопределить его нельзя. Итак, моя идея. Создать к контроллеру конфигурационный файл config.ini следующего содержания:

CODE (htmlphp):
скопировать код в буфер обмена
  1. [some_class]
  2. ext.className   = Test1
  3. ext.methodName  = Test1
  4. ext.sendData    = true


В этом конфиге описывать методы и классы, экземпляры которых будут автоматически созданы в контроллере. Вот таким образом их подгружать (извините, писал наспех):

PHP:
скопировать код в буфер обмена
  1. class extensionLoader{
  2.         private $config = array();
  3.  
  4.         function Load($Data=false){
  5.                 $this->config = parse_ini_file(__DIR__ . "\config.ini", true);
  6.                 foreach($this->config as $k => $v){
  7.                         $class = new $v['ext.className']();
  8.                                 $Data = $class->$v['ext.methodName']($Data);
  9.                         }
  10.                 return $Data;
  11.         }
  12. }
  13.  
  14. // а в контроллер добавим следующее:
  15.  
  16. class Controller{
  17.         function createPage() {
  18.                         $Data = Model::loadPage();
  19.                                 $extensionLoader = new extensionLoader();
  20.                                 $Data = $extensionLoader->Load($Data);
  21.                         View::showPage($Data);
  22.         }
  23. }


Как не сложно догадаться, extensionLoader парсит ини файл, создает на основе параметров экзепляры классов, их методам передает массив данных. Читай, это то же самое:

PHP:
скопировать код в буфер обмена
  1. class Controller{
  2.         function createPage() {
  3.                 $data = Model::loadPage();
  4.                 $privateContent = new privateContent();
  5.                 $data = $privateContent->make($data);
  6.                 View::showPage($data);
  7.         }
  8. }


Только теперь это можно реализовать без редактирования класса Controller'а.
Теперь скажите, это говнокод?! Если да, то почему?
Eazy-E Отправлено: 12 Июня, 2012 - 11:57:19 • Тема: Что стоит кэшировать, а что нет? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 102
Здравствуйте уважаемые товарищи. Возник такой вопрос, какой контент целесообразно сбрасывать в кэш, а какой - нет? В принципе, кэшировать можно абсолютно все. Что-то сбрасывать в кэш на несколько секунд, что-то подольше. Кэшировать всякие блоки типа "топ новостей", "последние комментарии" и т.д. А вот стоит ли кэшировать ленту новостей? Или, скажем, стоит ли кэшировать отдельную новость с учетом того, что к ней предполагается доступ большого кол-ва пользователей?
И еще такой вопрос, что подразумевается под "кэшированием шаблона"?
Заранее спасибо за ответы.

Страниц (6): [1] 2 3 4 5 6 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB