[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как переписать множество 'if' условий в ООП
Страницы: 1, 2, 3
Игорь_Vasinsky
для ооп есть же аналоги этих ветвлений

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

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

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Zzepish
Ron
Цитата
Не нравится, не делей через абстрактный класс.

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

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


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

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

Серьезно? Это по твоему "гибко"? И как ты будешь добавлять новый валидатор не изменив существующий код?
Zzepish
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{

}

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


var_dump((new Validator())->validateName('Артем'));
Zzepish
Хотя, у меня ощущение, что я сделал бред. Ибо эта система не имеет никакого логического значения.
Т.е. можно было просто отнаследовать и расширить. Результат тот-же. А __call не трогать.
Наркоман я какой-то
kaww
Zzepish, а теперь покажи как реализуешь метод validate ТСа, например
validate($label, $type, ['required','name'], $data)
Zzepish
kaww
читай выше - я сморозил бред. реализовать реально, но выйдет не очень хорошая конструкция
Ron
Цитата (Zzepish @ 22.03.2016 - 11:07)
Кстати - это паттерн ORM

Object-Relational Mapping? biggrin.gif

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

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

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

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

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


На тему открытости к чужому мнению: у меня возникает ощущение, что его хотят мне навязать) как следствие - я почти не принимаю его)
chee
Цитата (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 .

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Цитата (Zzepish @ 22.03.2016 - 11:07)
Кстати - это паттерн ORM, если ты не вкурсе про такой.

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

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


Второй принцип у SOLID:
https://ru.wikipedia.org/wiki/%D0%9F%D1%80%...%81%D1%82%D0%B8


_____________
There never was a struggle in the soul of a good man that was not hard
acerrusm
Цитата (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
chee
Цитата (acerrusm @ 23.03.2016 - 11:46)
Спасибо, что предупредил, а то я уже чуть было ее не заказал

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

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.