Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Паттерн Внедрение Зависимости 
:(
    Опции темы
fesor
Дата 18.7.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Ну ладно... тогда стоит рассмотреть этот вариант.
PM MAIL WWW   Вверх
Sanchezzz
  Дата 20.7.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



solenko мои классы и работаю и отдельно вне зависимости от моего мега-класса которого я люблю называть "core", бери и подключай.

Мой "core" не случайно называется так, при разработки велосипеда мои задачи были такие:
Нужно было сделать класс который будет подрубать классы и раздавать что первое и получилось.
Затем нужно было создать в ядре функцию которая будет отвечать за подключение зависимых классов, такие классы служат в роли компонентов которые отвечают за контент: новости, блоги, форумы итд.
Также эти компоненты получают доступ к функциям ядра и способность использовать подрубленные классы или подключать их.
Минус в них то они имеют обязательных 2 функции одна из ник подключение шаблона логики для вывода информации и функция вызова, которая  готовит данные для шаблона логики. 

Так выглядит у меня зависимый класс
Код

class news {
 function includeTemplate($name){
  // ... include
 }

 function create($parms = array()){
   /* способ 1*/
   $this->core->initModel('block'); // возращяет также класс      
   $block = new $this->core->class['block']; //Копия блоков это контейнеры информации
   $block->db = this->core->db; // обоьект БД

   /* способ 2*/
   $block  = $this->core->initModel('block');
   $block->db = this->core->db; // обоьект БД

   $arrData = $block->getElementByBlockID($parms['ID']);
   /* подключение вывода */
   $this->includeTemplate($parms['tmp1']);

 }
}


Сча я стараюсь доделать это дело до совершенства сделать как можно меньше зависимости.



Это сообщение отредактировал(а) Sanchezzz - 20.7.2009, 08:06


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
fesor
Дата 20.7.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



код очень похож на мой первый фреймворк)
PM MAIL WWW   Вверх
Sanchezzz
  Дата 20.7.2009, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



ну это не фреймворк это кусок компонента. (зависимый класс от ядра ((( так для наглядности )
Цитата

код очень похож на мой первый фреймворк)

и что стало с твоим первым фреймворком полетел в топку? или дышит до сих пор?

Это сообщение отредактировал(а) Sanchezzz - 20.7.2009, 09:18


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
fesor
Дата 20.7.2009, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Ну я понял.

Мой фреймворк? Ну я сделал на нем пару проектов и еще надо наверное будет сделать штуки 3... но наверное я его буду переписывать с нуля и попробую написать с его помощью небольшую CMS (мол Joomla c ТРУ MVC+ActiveRecord, блэкджеком и... девушками...)

для нее например контроллер будет выглядеть примерно так:
Код

class PostController extends Controller
{
    public function actionShow()
    {
         $criterias = array(
              array('post_id', $GET['id']),
              array('published', true),
         );
         $post = Post::model()->with('comments', 'profiles')->find($criterias);
         view::render('fullview', $post);
    }
}


Но я еще неуверен что это самый красивый вариант, а ничего красивее не придумалось(

Это сообщение отредактировал(а) fesor - 20.7.2009, 09:32
PM MAIL WWW   Вверх
solenko
Дата 20.7.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(Sanchezzz @  20.7.2009,  07:04 Найти цитируемый пост)
solenko мои классы и работаю и отдельно вне зависимости от моего мега-класса которого я люблю называть "core", бери и подключай.

Да, передавая ссылку на Core во все классы, вы используете паттерн внедрения зависимости и не зависите от имени класса )
Вот только вы вводите зависимость от core + всех классов, от которых данный компонент действительно зависит. И просто "бери и подключай" не получится, т.к. класс c интерфейсом Core таки необходим.



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Sanchezzz
  Дата 20.7.2009, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



прочитай внимательнее я написал что у меня 2 типа классов которые не зависят от ядра и есть зависимые которые ваше подключаются через другую функцию и зачем мне подрубать компоненты независимо от ядра если они под мою систему заточены? на то они и кмпоненты.
Цитата

И просто "бери и подключай" не получится, т.к. класс c интерфейсом Core таки необходим.
.
со вторым типом классов да не получится и мне это не так сильно важно.
а с первым все работает на ура.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
IZ@TOP
Дата 14.8.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Мега тема! Особенно про "мега класс, который Сначез любит называть Core" - валялся) И про девушек с блэкджеком - супер)
А вообще, автору респект. Интересные моменты уловил, для себя заметки сделал.

P.S. А вы знаете чем больше всего полезны паттерны? Мы их все знаем и при необходимости изучения/дополнения чужого гоvнокода своим, вполне сможем его понять и с ним работать  smile  smile 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1040 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.