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

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

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



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

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




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

Тебе всё абсолютно верно сказали, ты не понял.

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

Во-первых, не в этом дело. Если рассуждать как ты, то можно и "обезьяну" посадить вместо человека писать программы. Главная цель будет достигнута - программа работает, а как она написана - пофиг. Примерно так выглядит твоя точка зрения со стороны.

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

Цитата
Прятать код за инкапсуляцией - глупая затея.

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

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



Новичок
*

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




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

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


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


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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 7 дней
Карма: 591




Цитата (S.Chushkin @ 22.04.2016 - 15:12)
В ПХП нет "защиты от такого" - можно изменить всё что хочется

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

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



Новичок
*

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




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

Это сообщение отредактировал tceburashka.com - 26.04.2016 - 23:29


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

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



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

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




Цитата
В том и другом случае Ваша бизнес логика все-равно на чем-то завязывается и слабо-связанность превращается в зависимости. Для конечного клиента эта зависимость или от Вас или от сторонних производителей.

Придется вас расстроить. К сожалению, вы ничего не поняли. Но вы можете попробовать еще раз. Или почитать что-нибудь умное, например о DDD.

Цитата

Соль современного программирования в том, что бы создавать небольшие модули/классы и в контроллере их компановать иногда добавляя сторонние классы\модули.

Ну ясно. Оказывается всё просто.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
casper - gg  
[x] Дата
Цитировать сообщение

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



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

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 4 дня
Карма: 10




Цитата (Arh @ 23.04.2016 - 22:06)
Анонимные функции штука хорошая, правда не часто встречаются в повседневной жизни =)

придумал ситуацию, когда анонимная функция явно выглядит как на своем месте (как на меня). Есть допустим корзина товаров и у каждого товара своя система скидок. Но, допустим, если у пользователя день рождения или юбилей даты регистрации или еще чего, то делаем для него акцию и продаем по максимально возможной скидке. Обработку которой и загружаем в нужный класс из вне, вот типа того:
все здесь

class Card
{
public $item=array();

public function __construct($move)
{
$this->method = $move; // вот здесь конфигурация внедряется в объект
}

public function destributor($data)
{
$this->{$this->method[$data['move']]}($data); // вот здесь вместо if...else что-то похожее на фабрику касательно названий методов
}

public function put($data) // метод добавления товара в колрзину
{
$this->item[$data['item']]['name'] = $data['item'];
$this->item[$data['item']]['count'] = $data['count'];
$this->item[$data['item']]['price'] = $data['price'];
}
public function add($data) // метод увеличения товара в колрзине
{
$this->item[$data['item']]['count'] = $this->item[$data['item']]['count'] + $data['count'];
}
public function ded($data) // метод уменьшения товара в колрзине
{
$this->item[$data['item']]['count'] = $this->item[$data['item']]['count'] - $data['count'];
}
public function del()
{
unset($this->item);
}
public function run() // вывод результата
{
return !empty($this->item) ? $this->item : ' корзина итак пуста, что там удалять еще, если денег нет то их нет! ';
}
}


class Discount
{
public $total;

public function __construct($discount, $item, $function)
{

foreach( $discount as $key=>$val ) // перебор массива скидок, после чего цены некторых товары будут перещитаны
{
$function = empty($function) ? $this->convert($val['discount'], $val['edge']) : $function; // выбираем анонимную функцию (внешнюю или внутренюю)
$item[$val['item']]['price'] = $function($item[$val['item']]['price'], $item[$val['item']]['count']); // пересчитываем цену
$this->total += $item[$val['item']]['price'] * $item[$val['item']]['count']; // считаем общую сумму
}

$this->item = $item;
}

public function convert($discount, $edge) // метод внутренней анонимной функции
{
return function ($price, $count) use ($discount, $edge)
{
return ( $price*$count > $edge ) ? $price = $price - ( $price*($discount/100) ) : $price ;
};
}

public function run()
{
return !empty($this->item) ? $this->item : ' корзина итак пуста, что там удалять еще, если денег нет то их нет! ';
}
}


//-- функциональная часть--------------------------

//-- Системная настройка

$move = array( 1=>'put', 2=>'add', 3=>'ded', 4=>'del' );
$today = 'today';
$birthday = 'yestoday';
$edge = 300;
$discount1 = 25;
//-- Исключительные ситуации скидок
if( $today == $birthday )
{ // внешняя анонимная функция
$function = function ($price, $count) use ($discount1, $edge) {
return ( $price*$count > $edge ) ? $price = $price - ( $price*($discount1/100) ) : $price ;
};
}
else
$function = '';

//-- Описание условий скидки в разрезе каждого найменования товара в обычном порядке
$discount[1] = array( 'item'=>'Кепка', 'discount'=>15, 'edge'=>2399 );
$discount[2] = array( 'item'=>'Носки', 'discount'=>10, 'edge'=>1599 );

//-- Эмуляция действий с корзиной ($data вместо кукиc)
$data[1] = array( 'move'=>1, 'item'=>'Носки', 'count'=>4, 'price'=>800 );
$data[2] = array( 'move'=>2, 'item'=>'Носки', 'count'=>1, 'price'=>800 );
$data[3] = array( 'move'=>1, 'item'=>'Кепка', 'count'=>2, 'price'=>1200 );
$data[4] = array( 'move'=>3, 'item'=>'Носки', 'count'=>2, 'price'=>800 );
$data[5] = array( 'move'=>3, 'item'=>'Кепка', 'count'=>1, 'price'=>1200 );

$obj = new card($move);

foreach( $data as $val )
$obj-> destributor($val);

// смотрим без применения скидок
var_dump($obj->run());
$disc = new Discount($discount, $obj->run(), $function);
// смотрим с применением скидок
var_dump( $disc->run() );
// Общая сумма
var_dump( $disc->total );


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

Кто использует анонимные функции, - может кто подскажет, действительно ли к месту она здесь?

Это сообщение отредактировал casper - gg - 27.04.2016 - 17:15
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

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



146%
******

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




casper - gg
Ну идею ты понял)


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

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



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

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




Цитата (Arh @ 27.04.2016 - 20:07)
действительно ли к месту она здесь?

Нет, да и код который ты предоставил - отвратителен. Классы используешь как контейнеры для функций, буэ.


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

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

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



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

Профиль
Группа: Пользователь
Сообщений: 216
Пользователь №: 42190
На форуме: 1 год, 4 дня
Карма: 10




Цитата (chee @ 27.04.2016 - 21:01)
Нет, да и код который ты предоставил - отвратителен. Классы используешь как контейнеры для функций, буэ.

оба как контейнеры или второй? с твоих слов не очень то просто понять почему она (анонимная ф.) здесь не к месту? Ну то что код мягко говоря не очень, сам понимаю, но дело было - разобраться с анонимной функцией.

и что за буэ, желудок побаливает что ли biggrin.gif

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

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

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