Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (6) « Первая ... 3 4 [5] 6  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> ООП. Философия авторизации
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Arh, помоему ты сам придумал проблему и сам раздуваешь над ней, я что говорил что в конструктор можно передавать только объекты? нет. Я говорил что передача объекта в конструктор другого объекта называется внедрением зависимости через конструктор, а передача строки в конструктор, так и называется передача параметра в конструктор.

casper - gg, понятно.


Цитата (twin @ 23.04.2016 - 21:20)
Однако это для опенсорсного фреймворка, а там заклюют.

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


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2108
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 5 дней
Карма: 70




casper - gg
Анонимные функции штука хорошая, правда не часто встречаются в повседневной жизни =)
Что бы понять нафига они нужны, нужно столкнуться с задачей, где бы они пригодились.
Так что если сейчас не понимаешь, потом, когда понадобятся сразу поймёшь.
Например сделай библиотеку событий, в которой можно регистрировать обработчик событий и собственно запускать само событие.

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

class News {

protected $Handler; //Обработчик событий

public function __construct (Handler $Handler) {

$this->Handler = $Handler;

}

# Добавляет новости
public function add ($content) {

$this->Handler->event('news.add', $content); // Вызываешь событие

// добавляешь content в базу


}

}


Ты хочешь это событие как то обработать, может записать в лог, оповестить админа по почте или даже поменять $content
Регистрируешь обработчик события.

$Handler = new Handler();
$Handler->add('news.add', function (&$content) {

$content = 'Другой контент';

});

$News = new News($Handler);
$News->add('Привет'); // в базе будет "Другой контент" вместо "Привет"


А вообще ты с DIC хотел разобраться, там используются анонимные функции.
Типа так
$DI = new DI();
$DI->set('News', function () {

return new News();

});

$News = $DI->get('News');
$News->add('Привет');


Или допустим ты хочешь что бы $DI->get('News'); всегда возвращал объект с какой то настройкой по умолчанию, что бы каждый раз не настраивать.

$DI = new DI();
$DI->set('News', function () {

$News = new News();
$News->config([
'table' => 'news',
'limit' => 30,
'sort' => 'DESC'
]);
return $News;

});

$News = $DI->get('News');
$News->add('Привет');


--------------------
:)
PMСайт пользователя
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (chee @ 23.04.2016 - 18:06)
Ой, да тебе же на это начихать.

Для себя начихать. Для опенсорса не совсем.
Цитата (chee @ 23.04.2016 - 18:06)
Дай и кто тебя заклюет, я перестану обращать на него внимание и будешь ты писать в свои темах один, твой фреймворк это максимум CI первой версии.
Я не просил тебя писать, ты сам тему создал. Я вообще то просил кого-нибудь с дизайном сайта для доки помочь.

Ну написал - хорошо, спасибо. Не написал бы, хуже бы не стало. Я пока и не собирался его рекламить, в порядок приведу, доку напишу, тогда посмотрим. Будет ли кто кроме тебя внимание обращать. smile.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2108
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 5 дней
Карма: 70




chee
Цитата
помоему ты сам придумал проблему

Я же сказал что понял к чему ты клонишь и к тебе претензий уже нет, просто ты поправил мой пример

$Obj = new Controller(['key' => 'нужное значение']); 
$Obj->result();


На свой
Типа то что у меня это не внедрение, а внедрять правильней вот так:
$request = new Request($_POST, $_GET);
$controller = new Controller($request);


Ещё раз говорю, я понял твою мысль, но выглядит это так, как будто в конструктор нельзя инъжектить вводить значение массивом или другими типами отличными от объекта.
Теперь понятно что просто терминологии разные.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 29 дней
Карма: 15




Философия очень проста. Если ты можешь писать бизнес-логику, которая не зависит от нижележащих слоев и представляет из себя POPO (plain old php object), то ты программист от бога. Это дорого и сложно, но хорошо если программист к этому стремится.

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

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

Но вот twin говорит, что мы адепты ооп и рабы правил и рамок и ничего не понимаем, как нужно писать рили код. Но наверное это потому что он очень крутой!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (Santehnick @ 24.04.2016 - 00:20)
Но вот twin говорит, что мы адепты ооп и рабы правил и рамок и ничего не понимаем, как нужно писать рили код. Но наверное это потому что он очень крутой!
Не говорил этого. Я просто не люблю, когда вы что-то нагло присваиваете. Внедрение зависимостей, это не только объектная фишка. И без ООП при желании можно использовать. Так как нигде нет такого закона, что зависимость === объект.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
tceburashka.com  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 42890
На форуме: 7 месяцев, 11 дней
Карма: 2




Есть третий вариант. Во вьюху запихнуть работу с сессиями.


--------------------
Парсинг - автоматизация ручной работы. http://tceburashka.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
tceburashka.com  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 21
Пользователь №: 42890
На форуме: 7 месяцев, 11 дней
Карма: 2




Сантехник, без зависимостей могут быть только простые маленькие классы. Большие и сложные классы обричены на зависимости, иначе будут большие простыни кода, в котором нужно учесть все! Есть еще один выход... ООП преобразовать в АОП, то бишь аспектное программирование. Все зависимости выносятся наружу, но в этом случае, если сложный проект, то обслуживать его сложно будет.


--------------------
Парсинг - автоматизация ручной работы. http://tceburashka.com
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 29 дней
Карма: 15




tceburashka.com, ок, попробую подробнее.

Смотри. Мы пишем программу, чтобы решать определенные бизнес задачи. Если программа ничего не решает, то в ней нет смысла. Здесь у нас рождается понятие бизнес-логики.

Бизнес-логика - это самое важное, что есть в программе. Её стоит рассматривать, как слой в окружении врагов. Наша задача инкапсулировать бизнес-логику так, чтобы враги не проникли внутрь.

Проще говоря, слой приложения может вызывать бизнес-логику, а вот наоборот быть не должно. То есть контроллеры (слой приложения) может обращаться к бизнес-логике. А вот бизнес-логика не должна обращаться к уровню приложения.

Типичная ситуация. Yii фреймворк. 99% пишут бизнес-логику прямо в ActiveRecord моделях. Теперь бизнес-логика смешалась с уровнем приложения (фреймворка) и зависит от него.

Но можно поступить иначе. Бизнес-логику - в сервисы. Работу с хранилищем - в репозитории. Репозитории описываем интерфейсами. Сервис взаимодействует с хранилищем, через интерфейс. А репозиторий уже напрямую работает с чем хочет с AR, DAO, файловой системой или api стороннего ресурса. Нашим сервисам это не важно.

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

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

Мое сообщение вовсе не означало, что внутри бизнес-логики не может быть зависимостей. Могут, объекты должны взаимодействовать друг с другом. Бизнес-логика также может свободно зависеть и от сторонних библиотек, подтянутые композером. Просто, для чистоты и простоты кода, нужно стараться эти зависимости уменьшать и ослаблять. Но самое важное, не позволять вторгаться внешнему по отношению к бизнес-логике коду.

Вот в чем был основной посыл сообщения.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (Santehnick @ 26.04.2016 - 14:14)
Её стоит рассматривать, как слой в окружении врагов. Наша задача инкапсулировать бизнес-логику так, чтобы враги не проникли внутрь.

На этом лично я перестал читать.
Если к пользователем твоего кода относиться как к врагам...

Я вот спросить хочу. Сколько раз ты пытался скрыть контент от юзера? Ну что то типа "нельзя копироваь" и иже с ними?

Ты реально думаешь, что твоя схема убережет от дурака? Наивный.

Интерфейсами запутать хочешь логику или сервисами. Да я одну букву изменю, и твоей инкапсуяции пипец.

Цитата (Santehnick @ 26.04.2016 - 14:14)
Её можно легко взять и переехать на любой другой фреймворк
Чушь. Либо ты крестик сними, либо трусы одень. Ты не имеешь права писать логику, отвязанную от абстракций.

А зависимости, как пиво. Не только вредно, но и полезно. И наоборот. Вот сейчас столкнулся с ситуацией, когда ваши инъекции - зло.
Я разрулю конечно, костылями скореевсего. Посмотрим.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Кстати, задачка. Обработать синтаксическую ошибку в файле класса.

Другими словами преобразовать Parse error в собственную интерпретацию.


Чем тут поможет ваша бизнес-логика вне ActiveRecord моделей)))
Шютка.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2108
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 5 дней
Карма: 70




twin
Цитата
Кстати, задачка. Обработать синтаксическую ошибку в файле класса.

Вчера в системе сделал типа автонаследование.
То есть создаешь класс наследник от класса, который надо пофиксить, кидаешь в папку extension, DI его отдаёт вместо родителя =)


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Цитата (twin @ 26.04.2016 - 20:24)
Если к пользователем твоего кода относиться как к врагам...

ты не понял его метафоры
Цитата (twin @ 26.04.2016 - 20:24)
Ты реально думаешь, что твоя схема убережет от дурака? Наивный.

то что он описал, не для защиты от дурака нужно, а для разработки устойчивого к изменениям программного обеспечения.
Цитата (twin @ 26.04.2016 - 20:24)
Вот сейчас столкнулся с ситуацией, когда ваши инъекции - зло.

Интересно узнать, что за ситуация.
Цитата (twin @ 26.04.2016 - 20:32)
Кстати, задачка. Обработать синтаксическую ошибку в файле класса.

Установить php7 отловить эксепшен biggrin.gif


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 3 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 13 дней


Цитата (chee @ 26.04.2016 - 17:03)
ты не понял его метафоры
это ты не понял метафоры. Прятать код за инкапсуляцией - глупая затея. Особенно если это

Цитата (chee @ 26.04.2016 - 17:03)
Установить php7 отловить эксепшен

так и дурак сможет)))

кстати, не ставил семерку. там что, Parse error на уровне waribg вырасывается?

Цитата (chee @ 26.04.2016 - 17:03)
Интересно узнать, что за ситуация.

пока не решил - не скажу. Однако это мне доставило несколько неприятностей.
Цитата (Santehnick @ 26.04.2016 - 14:14)
В противном же случае, ничего не выйдет. В лучшем случае, будет копи-паст, который попутно родит кучу багов, что в условиях отсутствия тестов, будет наводить ужас и панику, как только подумаешь, что нужно мигрировать на новую мажорную версию фреймворка или не дай бог вообще на другой фреймворк.


Да, паника. Её и наблюдаем. Вот же ведь катастрофа, два раза в день нужно переходить на другой фреймворк. и вообще переходить. куда-нибудь.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 3 дня
Карма: 40




Цитата (twin @ 26.04.2016 - 21:16)
кстати, не ставил семерку. там что, Parse error на уровне waribg вырасывается?

эксепшен


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

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

Опции темыСтраницы: (6) « Первая ... 3 4 [5] 6  Ответ в темуСоздание новой темыСоздание опроса