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

> Как переписать множество 'if' условий в ООП
Игорь_Vasinsky  
Дата
Цитировать сообщение

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



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25989
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 23 дня
Карма: 725

Не курю:
1 год, 2 месяца, 9 дней


для ооп есть же аналоги этих ветвлений

ifoop(){
....
}
elseifoop{
...
}
elseoop{
...
}

чё не гуглите то... лентяи


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

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

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




Ron
Цитата
Не нравится, не делей через абстрактный класс.

Ты не понял!
Кстати - это паттерн ORM, если ты не вкурсе про такой.
Нафига тебе абстрактный класс - это была инверстия. Т.е. риторический вопрос. Я бысделал через абстрактный и просто его наследовал бы туда, где это надо.

Цитата
Я бы сделал валидаторы через интерфейс, например. Не нужно воспринимать паттерны настолько буквально. Тебе показали идею, как сделать архитектурно правильно. Реализация может отличаться от википедии


А я тебе говорю, как сделать гибко.
Ты помотри, как подобное реализованно в magento (по-моему в ней). ФИшка в том, что там запиленно очень похожая система


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 184




Цитата (Zzepish @ 22.03.2016 - 07:07)
А я тебе говорю, как сделать гибко.

Цитата (Zzepish @ 21.03.2016 - 19:52)
if(method_exists($this, 'validate'.$type))
    self::'validate'.$type($data)

Серьезно? Это по твоему "гибко"? И как ты будешь добавлять новый валидатор не изменив существующий код?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




kaww
<?php

interface
iCall
{
public function __call($method, $args);
}

abstract class MethodsEntity implements iCall
{

public function __call($method, $args)
{
if(method_exists($this,$method)){
$this->$method($args);
}
}

}


class Validator extends MethodsEntity{

}

Я сделал так.


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

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




пример:
class Validator extends MethodsEntity
{
public function validateName($name)
{
return (boolean)preg_match('#^[А-ЯЁA-Z][а-яёa-z]+$#u', $name);
}
}


var_dump((new Validator())->validateName('Артем'));


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

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




Хотя, у меня ощущение, что я сделал бред. Ибо эта система не имеет никакого логического значения.
Т.е. можно было просто отнаследовать и расширить. Результат тот-же. А __call не трогать.
Наркоман я какой-то


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев, 4 дня
Карма: 184




Zzepish, а теперь покажи как реализуешь метод validate ТСа, например
validate($label, $type, ['required','name'], $data)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




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


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

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



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

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1044
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 28 дней
Карма: 13




Цитата (Zzepish @ 22.03.2016 - 11:07)
Кстати - это паттерн ORM

Object-Relational Mapping? biggrin.gif

Цитата (Zzepish @ 22.03.2016 - 12:03)
читай выше - я сморозил бред.

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



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

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



Аццкая хрень
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5475
Пользователь №: 32538
На форуме: 4 года, 6 месяцев, 11 дней
Карма: 49




Ron
Цитата
Object-Relational Mapping? biggrin.gif

Он самый. Тащусь от него! Афигенная штука biggrin.gif

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


На тему открытости к чужому мнению: у меня возникает ощущение, что его хотят мне навязать) как следствие - я почти не принимаю его)


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

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



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

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




Цитата (acerrusm @ 21.03.2016 - 23:06)
А в методе get($validatorName) все равно придется делать проверку вроде if ($validatorName == 'required').. ?

Нет, решение тут описано http://phpforum.su/index.php?act=Print&cli...limin=8&limit=1

Цитата (acerrusm @ 21.03.2016 - 23:45)

Да, давно уже пора паттерны изучить. Вот эту книгу хочу почитать.

Отвратительная книга, не рекомендую. Читал, понимания не добавила. Примеры лишены смысла, слишком абстрактны.

Рекомендую для поднятия навыков смотреть и изучать следущее:

1. https://refactoring.guru/ru?q=user
2. http://www.ozon.ru/context/detail/id/1308678/
3. Принцип подстановки Барбары Лисков
4. Разработать pet-проект с использование паттерна "Внедрение зависимостей", можешь и код моей CMS почитать https://bitbucket.org/cheevauva/examplecms/src .


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

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

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



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

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




Цитата (Zzepish @ 22.03.2016 - 11:07)
Кстати - это паттерн ORM, если ты не вкурсе про такой.

я не понял причём тут вообще ORM, как он связан с этой темой blink.gif


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

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

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



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

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6065
Пользователь №: 18498
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 256




Цитата (acerrusm)
Я еще давно где то прочитал, что это некрасивое решение, и его нужно переделать в соответствии с ООП. Там еще говорилось что то про паттерны. Но блин не помню. С паттернами практически не знаком.


--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
acerrusm  
 ۩  Дата
Цитировать сообщение

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



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 139
Пользователь №: 39635
На форуме: 2 года, 6 месяцев, 20 дней
Карма:




Цитата (chee @ 22.03.2016 - 21:05)
Цитата (acerrusm @ 21.03.2016 - 23:06)
А в методе get($validatorName) все равно придется делать проверку вроде if ($validatorName == 'required').. ?

Нет, решение тут описано http://phpforum.su/index.php?act=Print&cli...limin=8&limit=1

Цитата (acerrusm @ 21.03.2016 - 23:45)

Да, давно уже пора паттерны изучить. Вот эту книгу хочу почитать.

Отвратительная книга, не рекомендую. Читал, понимания не добавила. Примеры лишены смысла, слишком абстрактны.

Рекомендую для поднятия навыков смотреть и изучать следущее:

1. https://refactoring.guru/ru?q=user
2. http://www.ozon.ru/context/detail/id/1308678/
3. Принцип подстановки Барбары Лисков
4. Разработать pet-проект с использование паттерна "Внедрение зависимостей", можешь и код моей CMS почитать https://bitbucket.org/cheevauva/examplecms/src .

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

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



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

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




Цитата (acerrusm @ 23.03.2016 - 11:46)
Спасибо, что предупредил, а то я уже чуть было ее не заказал

Если хочешь, могу скинуть эту книгу http://www.ozon.ru/context/detail/id/1308678/ в pdf формате. Скинь email в личку если надо.


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

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

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

Опции темыСтраницы: (3) 1 [2] 3  Ответ в темуСоздание новой темыСоздание опроса