Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как получить имя дочернего класса внутри класса-родителя? [4]

 PHP.SU

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


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

> Без описания
Eazy-E
Отправлено: 30 Мая, 2012 - 04:09:38
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




etoYA, курсы Специалиста по PHP смотрел, а вот про MVC не слышал! Киньте ссылку в личку, буду очень признателен. Улыбка


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
etoYA
Отправлено: 30 Мая, 2012 - 14:35:48
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




 
 Top
Eazy-E
Отправлено: 30 Мая, 2012 - 16:34:21
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




etoYA, спасибо. у меня есть 4-ый уровень. в свое время не дошел до него)


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 02:27:27
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




Сейчас почитал про паттерн HMVC, и кажется понял, что это именно то что мне нужно. Как я понял, согласно концепции HMVC, top-level модуль может передавать/получать какие либо значения (переменные, массивы) в модуль среднего уровня, который в свою очередь так-же может "общаться" с модулем нижнего уровня. Например, модуль верхнего уровня ничего не знает о модулях среднего уровня. Основной модуль передает некие параметры в Роутер, который в свою очередь, на основе переданных параметров подгружает соответствующие модули среднего уровня. В основном модуле динамически создаются экземпляры классов модуля среднего уровня. И, собственно, все! Скажите, я снова заблуждаюсь?


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 03:51:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Eazy-EТаки да! Снова заблуждаетесь! Я не понимаю уже, похоже вы везде ищете только :
Eazy-E пишет:
именно то что мне нужно
, а остальное как и не для вас!) - Печально!!!

MVC - в первую очередь это парадигма, суть которой заключается в том, чтобы разбить приложение на логические составляющие, каждая из которых будет выполнять свои задачи и не более того!

Model - (Модель)логика всего приложения, она вообще ничего не знает ни о контроллере, ни о view. Модель - это всевозможные модули авторизации, регистрации, новостей, комментариев, фотоальбомов, так же именно модель осуществляет всякие соединения с базами данных и вообще в гугле почитайте, что же такое МВЦ! Но тут нужно вам сразу пояснить, что в модели не должно быть ничего кроме php, или это уже не модель, т.е вывести все ваши <div class='error'> Неверный логин или пароль</div> это задача компонента View )))
View - (Печатная машинка), она отвечает только за вывод информации пользователю, HTML, RSS, XML ), итд. )

Controller - (Контроллер), связующее звено всего приложения, запросы от пользователя поступают именно в контроллер и именно он решает, в каком там формате View будет выводить весь хлам пользователю и не только это! Так-же внутри контроллера можно создать экземпляры нужных моделей, чтобы когда View начнет выводить информацию внутри шаблона, или что у вас там можно было спокойно юзать созданные ранее экземпляры модлей, допустим Users, как никак а авторизация почти везде нужна )))

И нету тут никаких модулей верхнего уровня и модулей нижнего уровня, три компонента приложения выполняют каждый свою задачу!

Сорри если, что-то не очень доходчиво )) Я сегодня что-то загулял и не совсем трезв ))
(Добавление)
ПС : Роутер, это тоже некий компонент, который как-бы читает URL или что там прислал пользователь, и решает какой там из контроллеров запустить, а не :
Eazy-E пишет:
Основной модуль передает некие параметры в Роутер, который в свою очередь, на основе переданных параметров подгружает соответствующие модули среднего уровня


Классика жанра :
http://site[dot]ru/album/photos/

Отсюда можно предположить, что album это контрллер(class Controller_photos), photo это метод внутри класса контроллера который подгружает модель фотоальбома и выводит пользователю фоточки )) Именно роутер должен заниматься такими url и решать альбом или что-то другое ))

(Отредактировано автором: 31 Мая, 2012 - 04:04:31)

 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 05:22:38
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




Это вы кажется меня не поняли. Суть MVC мне понятна, только зря писали. Я спросил конкретно про HMVC. Вот что я имел ввиду:

Где так называемая "триада" (верхняя), состоящая из MVC, обращается к другим триадам. Я уже не знаю как лучше вам объяснить...
(Добавление)
Да, и опять же, под модулем я имел ввиду что-то конкретное. Например модуль "News" состоит из: NewsController, NewsModel, NewsView. Чем не модуль-то?

(Отредактировано автором: 31 Мая, 2012 - 05:24:39)



-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 05:30:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Как это я вас не понял, если это я вам и рассказал про этот HMVC... Сути дела это не меняет, HMVC отличается от MVC тем, что любой контроллер в HMVC может запросить результат работы любого другого контроллера!
Т.е как-бы контроллер Users, может обратиться к контроллеру Login, и спросить у него форму авторизации если она ему понадобится ))
Грубо говоря, Users сам вызовет внутри себя контроллер Login, внутри Login отработают его модели, которые определят, может капчу пользователю пора в форму запилить, а то он тут с ошибками в паролях частит уже, далее Login отработает, вернет всё, что наработал контроллеру который и запрашивал результат его работы(Users), а Users передаст этот хлам во View который в свою очередь напечатает всё пользователю... - Я хз как тебе объяснять, по этому на пальцах уже пытаюсь ))
(Добавление)
Eazy-E пишет:
"News" состоит из: NewsController, NewsModel, NewsView. Чем не модуль-то?

Что ты подразумеваешь под словом модуль?

(Отредактировано автором: 31 Мая, 2012 - 05:40:14)

 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 05:48:16
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




Я в принципе это и имел ввиду. Вот пример:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class PageController{
  3.        
  4. public function actionPage($arg = false){
  5.  
  6. $view = new View;
  7. $db = new Db;
  8.  
  9. $result = $db->query('SELECT * FROM 'pages' LIMIT 1');
  10. $content = $result['page_content']; // содержание страницы
  11. $template = $result['template']; // шаблон отображения страницы
  12.  
  13. $view->set(array(
  14. '{content}'      => $content
  15. ));
  16.                 FrontController::setLayout($view->render($template));
  17.         }
  18. }
  19. ?>


Как видно из примера, в бд мы храним два поля: 'page_content' - содержимое страницы, 'template' - шаблон страницы.

Теперь задача:
Добавить в БД поле 'page_lang'
Получить содержимое этого поля. Сделать проверку:

PHP:
скопировать код в буфер обмена
  1. $page_lang = $result['page_lang'];
  2. if ($page_lang == 'ru') {
  3. $template = 'page-ru.tpl';
  4. } elseif ($page_lang == 'en') {
  5. $template = 'page-en.tpl';
  6. }


Короче, на основе полученного значения (язык страницы) переопределить шаблон для вывода страницы. Все это надо сделать, не касаясь кода из первого листинга. Как?


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
DeepVarvar Супермодератор
Отправлено: 31 Мая, 2012 - 05:57:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Eazy-E пишет:
Как?
Как-нибудь но не так.
Языки, темы, состояние сайта, сессии, куки - это все ОСНОВНОЕ ОКРУЖЕНИЕ.
Какие нна модули? Ядро спроектируй и сделай сначала.
Все вопросы про модули отпадут когда ядро будет сделано, а потом еще 100500 раз переделано. Хм
(Добавление)
Eazy-E пишет:
Добавить в БД поле 'page_lang'
Active Records/DB branch?
Eazy-E пишет:
язык страницы
Какой страницы? Язык юзер в профиле всю жизнь выбирал, а тут бац - страница на китайском!

Не, не - давай приведи мысли в порядок, испиши пару тетрадок по 96 листов, а там глядишь уже и картина общая сформируется...
 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 06:07:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Eazy-E, короче я скоро перестану вам, что либо подсказывать, это утомляет уже...
Вы ничего не слушаете, не читаете, а только пишите "говнокод" и приходите к нам c этими филькиными грамотами и спрашиваете "Как?"...

Вы либо прочтите, что-то сначала, либо делайте как умеете в процедурном или какой у вас там еще на вооружении стиль и забудьте о всех этих MVC, HMVC, паттернах, парадигмах и всем сопутствующем - значит рано вам еще за них браться, всё с опытом придет в т.ч и понимание всего этого...

Я вам двумя постами выше писал, что именно [М]одель в h[M]vc и в [M]vc должна заниматься всякими подключениями к базе, а вы тут присылаете контроллер+модель+view-всё-в-одном, потрудитесь хоть советы читать которые вам дают тут! :
Eazy-E пишет:
PHP:
скопировать код в буфер обмена
  1. $result = $db->query('SELECT * FROM 'pages' LIMIT 1');

Ну а тема хранения ШАБЛОНА в базе данных это вообще отдельный длинный холивар...

Только воистину мало-мальски понимающий в этом вопросе человек может так сделать...
В конце концов, пользуйтесь хотя бы гуглом "Где лучше хранить html шаблоны для php приложения?"
Думаю масса слов-подсказок сразу выпадет :
Folder Template, View ...
(Добавление)
Вот представьте любое высоконагруженное приложение, представили? А теперь скажите, действительно стоит ~N тысяч раз в секунду(предположим такое кол-во обращений к серверу у нас из-за присутствия ~N тысяч человек online) обращаться, как вы думаете за чем? - За шаблоном! А куда обращаться? - В базу для любого кто обновил страницу, что таки не является самым быстрым и рациональным способом???
Печаль... Если вы уж так хотите html шаблоны разные, темы там всякие, почитайте что нибудь про шаблонизаторы, на этом форуме не раз уже их обсуждали, я даже какие-то свои храмые-наработки по этому поводу показывал. Если погуглить можно найти такие херовины как "Шаблонизатор Smarty"..

принцип MVC еще и в том, что модель содержит только логику, а view негде по сути взять html код который никак не должен приходить из модели или быть в контроллере , по этому происходит отделение php от html, php - модель, и возникает шаблон содержащий html код, а класс view загружает нужный в зависимости от данных модели и контролера и много еще чего.

Принцип шаблонов в том, что в корне сайта как правило лежит папка Template или View или как захотите называйте и в ней эти самые шаблоны страниц. Внутри контроллера когда это становится необходимо класс View открывает нужный шаблон, парсит там может какие-то тэги по типу как у вас '{content}' => $content, может какой-то свой нативный синтаксис запиливает, может даже сохраняет "скомпилированный" предыдущими действиями результат куда-нибудь в папку tmp под странным именем (4fc6e6ae39388.tmp), а при следующем обращении вместо того чтобы парсить всё снова, дабы не терять драгоценные доли секунд процессорного времени, он загружает "скомпилированный" файл из этой папки - сие чудо называется кэш!

(Отредактировано автором: 31 Мая, 2012 - 06:54:49)

 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 10:22:29
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




Цитата:
Ну а тема хранения ШАБЛОНА в базе данных это вообще отдельный длинный холивар...

Только воистину мало-мальски понимающий в этом вопросе человек может так сделать...
В конце концов, пользуйтесь хотя бы гуглом "Где лучше хранить html шаблоны для php приложения?"
Думаю масса слов-подсказок сразу выпадет :


Какие еще шаблоны?! Не понял Вы меня извините, но

подразумевалось НАЗВАНИЕ шаблона, а не HTML код...
(Добавление)
Мне жаль что вы столько текста почем зря написали... Такие вещи любому дураку ясны.


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 10:39:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Ничего не зря! Всё равно как я понял список имен доступных шаблонов хранится в базе, и даже если человек зашел на сайт впервые, никто и в мыслях не держал регистрироваться на этом ресурсе, всё равно ваше приложение с каждым обновлением страницы лезет в базу, дабы выдать без того понятную вещь!!! default.tpl - или как-то так !! Так что к вашему "коду" этот случай тоже вполне применим, хотя и не с таким размахом, как мне с пьяну показалось...

Да, кстати
"SELECT * FROM '....' ...." - по моему - это моветон..
 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 11:18:57
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)




Вы издеваетесь что-ли? Конечно же скрипт лезет в базу, блин, откуда он получает содержимое страницы?! Содержимое сбрасывается в memcache, в последствии оттуда и берется (в обход БД). Не делайте из меня дурака, бога ради. А то, что в бд хранится имя шаблона.. ну и что?! Если поле с именем шаблона пустое, то скрипт грузит дефолтный шаблон. Вполне распространенная практика, разрешать пользователю CMS использовать отдельный шаблон для страницы. Стоит так же заметить, что это не шаблон целого сайта, а кусок HTML кода, который отвечает конкретно за вывод "Custom Page". И все же...
Цитата:

Всё равно как я понял список имен доступных шаблонов хранится в базе, и даже если человек зашел на сайт впервые, никто и в мыслях не держал регистрироваться на этом ресурсе, всё равно ваше приложение с каждым обновлением страницы лезет в базу, дабы выдать без того понятную вещь!!!


Я ни это имел ввиду. Я не знаю какими шаблонизаторами вы пользуетесь, но моем шаблонизаторе такая структура шаблонов:

main.tpl - основной шаблон сайта
custom.pages.tpl - шаблон вывода "статической страницы" (в данном случае - дефолтный)
и так далее.....


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
sKaa
Отправлено: 31 Мая, 2012 - 11:49:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Eazy-E пишет:
Я не знаю какими шаблонизаторами вы пользуетесь, но моем шаблонизаторе такая структура шаблонов:

main.tpl - основной шаблон сайта
custom.pages.tpl - шаблон вывода "статической страницы" (в данном случае - дефолтный)
и так далее.....

Прикреплено изображение (Нажмите для увеличения)
ImUrd.png
 
 Top
Eazy-E
Отправлено: 31 Мая, 2012 - 11:57:44
Post Id



Гость


Покинул форум
Сообщений всего: 88
Дата рег-ции: Сент. 2011  
Откуда: Анапа


Помог: 0 раз(а)





(Добавление)
Цитата:
а при следующем обращении вместо того чтобы парсить всё снова, дабы не терять драгоценные доли секунд процессорного времени, он загружает "скомпилированный" файл из этой папки - сие чудо называется кэш!


Спасибо тебе. Уже все есть. Memcache, Xcache, JSON, files. Выбирайте, что вам больше нравится? Раз уж отошли от темы, и начали флудить.


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
Страниц (6): « 1 2 3 [4] 5 6 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB