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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> global в методах класса 
V
    Опции темы
NewDima
Дата 25.9.2009, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



bars80080, может просто в конструктор передать? Агрегирование пойдет?
PM ICQ   Вверх
sTa1kEr
Дата 25.9.2009, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(bars80080 @  25.9.2009,  01:32 Найти цитируемый пост)
а разве в register я не могу поменять переменные любым случайным модулем? 

В register ты всегда можешь контролировать, что у тебя там лежит и зачем. К примеру, можешь сделать его read only или вести логи к его объектам или же вовсе изменить способ хранения объектов.
А globals - это просто бесконтрольная помойка переменных.
PM MAIL   Вверх
youri
Дата 25.9.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(sTa1kEr @  25.9.2009,  08:38 Найти цитируемый пост)
А globals - это просто бесконтрольная помойка переменных

изначально - не помойка, но может такой стать
PM   Вверх
bars80080
Дата 25.9.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(NewDima @  25.9.2009,  05:30 Найти цитируемый пост)
может просто в конструктор передать? Агрегирование пойдет? 

вот, интересный момент.

допустим, так:

Код

$some = new someclass($obj);

class someclass {

    var obj;
    function someclass(&$obj) {
        $this->obj = $obj;
    }
    function metod() {
        $this->obj->objmetod();
    }

}

по сути здесь мы и отделяем имя переменной от того что происходит в классе
такая постановка грозит чем-нибудь? дублированием объекта или иными заморочками?
PM MAIL WWW   Вверх
MoLeX
Дата 25.9.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Цитата(bars80080 @  25.9.2009,  09:39 Найти цитируемый пост)
дублированием объекта 

а с какой это стати объект будет дублирован?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
NewDima
Дата 25.9.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



bars80080, иногда пугаешь)
ты пишешь под четверку?
По ссылке передашь и не будет никакого дублирования
PM ICQ   Вверх
solenko
Дата 25.9.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



bars80080, мой вам совет -- не пытайтесь решить одну конкретную проблему, задав вопрос на форуме. Вы вырываете ее из контекста и какие бы гуру вам не отвечали -- все равно получится костыль.

Получите системные знания по объектно ориентированом проектировании. Системности знаний могут помочь книги, а не ответы на форуме или статьи. 

Из того, что читал я, могу посоветовать:
Т.н. банда четырех - хрестоматийная книга, но тяжела для восприятия. 
Фаулер - Архитектура корпоративных программных приложений. Опять же хрестоматия, но читается намного легче (как и все его книги).
Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования - написана легко, примеры на php, примеры на web задачах.


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


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(MoLeX @  25.9.2009,  10:49 Найти цитируемый пост)
а с какой это стати объект будет дублирован? 

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


Цитата(NewDima @  25.9.2009,  11:37 Найти цитируемый пост)
ты пишешь под четверку?

ряд сайтов лежит на хосте с 4-кой. стало быть поддерживаем


Цитата(solenko @  25.9.2009,  12:04 Найти цитируемый пост)
мой вам совет -- не пытайтесь решить одну конкретную проблему, задав вопрос на форуме

это всё хорошо, но время, время...

безуслвно, будь возможности, можно было бы проштудировать кучу фолиантов, дабы достичь достойного уровня мастерства. но не в моей ситуации. если я и смогу найти время почитать книжку, то уже не в этом году

возьмём эту литературу на заметку
PM MAIL WWW   Вверх
Simpliest
Дата 25.9.2009, 13:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(youri @  25.9.2009,  02:39 Найти цитируемый пост)
ты только забыл указать, что этот код - пример статической зависимости, там именно так прямо над кодом и написано

Для меня это было очевидно, но хорошо. Исправил.

Цитата(youri @  25.9.2009,  02:39 Найти цитируемый пост)
да, статическая зависимость, но мы же можем подменять объекты, которые service locator раздает

Минутку. Вам провести тест мешала именно статическая зависимость.
Вы ее не убрали, вы сменили шило на мыло. Теперь вместо правки кода Server мы будем править код Locator. А чем это лучше?

Избавится от статических зависимостей внутри класса вы можете инъекцией зависимости (Dependency injection), или паттерном строитель(Builder), который будет строить/собирать нужный объект. Вы не сделали ни того, ни другого. В чем был смысл сотрясания воздух в статье?

А финальный пример с toolkit вы там видели? Это же абзац полный. Вы создали жуткий звездный объект помойку. В котором неизвестно, что, где, когда и откуда.

Меня от этого вылечила идея автогенерируемой самоорганизующейся базы на архитектуре EAV. Идея прикольная - спору нет. Вот только удобство поддержки и качество ее работы - удручали.
Постоянный профайлинг (иначе не будет автооптимизации) - убивал производительность.
EAV - переложил всю логику связей и контроля целостности данных на приложение (это надо было реализовать таки, а в БД уже был готовый механизм).
Администрирование базы требовало написания специфических утилит потому что база практически ничего не знала о том, что лежит внутри нее.

Как итог куча лишнего геморроя. За облегчение жизни в виде прозрачного маппинга моделей в базу и отсутствие необходимости думать над ее структурой.

KISS - это сделать максимально просто насколько это возможно, но не проще. В противном случае облегчив жизнь в одном месте мы крайне усложним ее себе в другом.

Добавлено @ 13:55
Цитата(bars80080 @  25.9.2009,  09:39 Найти цитируемый пост)
по сути здесь мы и отделяем имя переменной от того что происходит в классе
такая постановка грозит чем-нибудь? дублированием объекта или иными заморочками?

Если не поставишь в конструкторе проверку на соответствие интерфейсу - грозит неработоспособностью smile

То что ты написал это dependency injection вкупе с delegation

P.S. что меня еще убивает в паттернах, так это то, что для осуществления похожих действий существует не один паттерн :(

Это сообщение отредактировал(а) Simpliest - 25.9.2009, 13:55


--------------------
user posted image
PM   Вверх
youri
Дата 2.10.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



так эта...

Цитата(Simpliest @  24.9.2009,  22:21 Найти цитируемый пост)
Там еще куча перлов. Например, паническая боязнь статических связей.

кроме того, я не нашел там "панической боязни". Увидел только, что статическая зависимость рассматривается как один из недостатков. Если это учитывать, все становится не таким черным. Там не говориться, что делать. Там обсуждаются разные варианты с их плюсами и минусами. Сравниваются

Цитата(Simpliest @  25.9.2009,  13:44 Найти цитируемый пост)
Минутку. Вам провести тест мешала именно статическая зависимость.Вы ее не убрали, вы сменили шило на мыло. Теперь вместо правки кода Server мы будем править код Locator. А чем это лучше?

а разве статических зависимостей не стало меньше? 

Цитата(Simpliest @  25.9.2009,  13:44 Найти цитируемый пост)
А финальный пример с toolkit вы там видели? Это же абзац полный. Вы создали жуткий звездный объект помойку. В котором неизвестно, что, где, когда и откуда.

я этим toolkit'ом не пользовался и мне не очевидно, что это помойка. Я считаю так: ее можно превратить в помойку
PM   Вверх
Simpliest
Дата 2.10.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(youri @  2.10.2009,  00:12 Найти цитируемый пост)
Там обсуждаются разные варианты с их плюсами и минусами. Сравниваются

Там останавливаются на конкретном решении, - которое им подошло, - Service Locator.
Dependency Injection упомянут вскользь, видимо, для них он оказался слишком сложным.

И в свете
Цитата(youri @  2.10.2009,  00:12 Найти цитируемый пост)
а разве статических зависимостей не стало меньше? 

Их осталось столько же.

Был один "звездный" объект мы его заменили другим объектом путем прямого редактирования кода объектов.
Статическая зависимость, которая якобы мешала ТДД осталась.
Надо будет опять поменять - мы будем или редактировать эти объекты или будем увеличивать "звездность" и запутанность Service Locator.

А представьте, если нам нужно будет добавить новый функционал не затронув старого для соседей?
В случае Injection я просто в конкретном месте передам новый объект реализующий нужный интерфейс.
В случае Locator -  мне придется выдумывать пляски с бубном.  Мне нужен объект с интерфейсом IA, а какой конкретно из 2х - хрен его знает. 

Смысла телодвижений 0. Оставались бы уже с Singleton.


--------------------
user posted image
PM   Вверх
bars80080
Дата 2.10.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(Simpliest @  25.9.2009,  13:44 Найти цитируемый пост)
То что ты написал это dependency injection вкупе с delegation

в смысле?
PM MAIL WWW   Вверх
solenko
Дата 2.10.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bars80080 @  2.10.2009,  08:39 Найти цитируемый пост)
Цитата(Simpliest @  25.9.2009,  13:44 )
То что ты написал это dependency injection вкупе с delegation

в смысле? 

Внедрение зависимости. Ну а по делигации -- в гугл )



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


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



для нашего сурового и слегка окостеневшего моска там слишком тонко написано. тонко и размазанно

а в трёх фразах можно же?
PM MAIL WWW   Вверх
solenko
Дата 2.10.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(bars80080 @  2.10.2009,  13:18 Найти цитируемый пост)
а в трёх фразах можно же? 

Конечно можно. Внедрение зависимости, это когды зависимости внедряются, а не содержатся в исходном коде класса ))


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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