Шаблон “Обработчика”?

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

$has_url = (stristr($comments, 'http') || stristr($comments, 'www.'));
if($has_url) {
  // prevent submit
}

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

if (!empty(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['name']) && !empty(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['fromemail']) && !empty(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['message']) && $go == TRUE) { $has_url = (stristr(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['message'], 'http') || stristr(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['message'], 'www.')); if($has_url) { // whatever happens if contains url } $name = Filter::no_html(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['name']); $from = Filter::no_html(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['fromemail']); $start_dt = Filter::no_html(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['start_dt']); $end_dt = Filter::no_html(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['end_dt']); $comments = Filter::no_html(

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['message']); $validate->isEmpty($name, LANG_JAVASCRIPT_PLEASE_ENTER . " " . LANG_YOUR_NAME); $validate->isEmpty($from, LANG_JAVASCRIPT_PLEASE_ENTER . " " . LANG_YOUR_EMAIL); $validate->isSingleEmail($from, LANG_JAVASCRIPT_PLEASE_ENTER_EMAIL); $validate->isEmpty($start_dt, LANG_JAVASCRIPT_PLEASE_ENTER . " " . LANG_START_DATE); $validate->isEmpty($end_dt, LANG_JAVASCRIPT_PLEASE_ENTER . " " . LANG_END_DATE); $validate->isEmpty($comments, LANG_JAVASCRIPT_PLEASE_ENTER . " " . LANG_YOUR_MESSAGE); $modules->call_hook('contact_owner_submit', ''); // Call any module functions $id = (int) @

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['ownerid']; $vehicle = (int) @

Вы можете найти сообщение, используя метод stristr, по определенным критериям в строке:

[110]

Подробнее о методе stristr можно узнать здесь: /en/function.strstr.php

Таким образом, ваш код может выглядеть следующим образом:

[111]POST['listingid']; if ($validate->isError()) // whatever goes here { }

14
задан abatishchev 2 March 2016 в 20:03
поделиться

5 ответов

это - ООП способ сделать закрытия на языках, который не имеет их. это не имело имени 'шаблона', потому что на функциональных языках это - очевидный способ работать. на языках ООП, OTOH, необходимо сделать некоторую работу, таким образом, это кажется nameable идиомой. 'Обработчик' звучит правильным.

(это не одиночный элемент, BTW),

9
ответ дан 1 December 2019 в 14:12
поделиться

Я использую его под именем "SingletonRegistry"

Посмотрите этот поток

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

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

Я нашел этот класс, также ищущий сеть то имя.

Похож на то же, не?

2
ответ дан 1 December 2019 в 14:12
поделиться

Поскольку у Вас было слово "Action" в Вашем сообщении, я ведусь полагать, что это могло бы быть частью Шаблона "команда". Проверьте Wiki и ищите "Обработчик"..., возможно, это даст немного больше понимания.

http://en.wikipedia.org/wiki/Command_pattern

2
ответ дан 1 December 2019 в 14:12
поделиться

Я не знаю, рекомендуется ли это действительно, но я должен был на самом деле использовать такой шаблон в некоторых приложениях MATLAB, которые я записал для имитации подобного ссылке поведения для объектов (который бесполезен теперь с более новыми версиями).

Как ни странно, я на самом деле назвал функциональный "обработчик". Мой объект просто сохранил одно поле, содержащее ссылку указателя на функцию (@handler), и методы были просто обертками, которые вызвали эту функцию. Например, перегруженное ДОБИРАЮТСЯ, функция для объекта просто звонила бы:

object.handler('get',...input argument list...)

Я не уверен, считают ли это "хорошим" проектным решением на других языках. Я выбрал его из необходимости, потому что это был единственный способ, которым я произвел впечатление для создания подобного ссылке поведения в MATLAB (функция-обработчик имела доступ к рабочей области инициализируемых данных, которые я не должен буду передавать в и из различных вызовов метода). Новейшие версии MATLAB теперь имеют класс ДЕСКРИПТОРА, который может сделать этот материал намного более чистым способом.

1
ответ дан 1 December 2019 в 14:12
поделиться

Я думаю, что цель предотвращения перекомпилировала, намного лучше подается COM дизайн, на который влияют. Какую дополнительную гибкость делают Вы добираетесь от этого:

IHandler UserHandler = ...;

Dictionary<string,string> result = UserHandler.Handle(
    new Dictionary<string, string>{
        { "Action", "AddUser" },
        { "UserName", "Joe Bloggs" },
        { "Age", "23" } });
NewUserId = Int.Parse(result["UserId"]);

:

IUserHandler UserHandler = ...;

AddUserResult result = UserHandler.AddUser(new AddUserArgs {
    UserName = "Joe Bloggs",
    Age = 23 });
NewUserId = result.UserId;

когда можно расширить действия, результаты и аргументы:

IUserHandler UserHandler = ...;

AddUserResult2 result = UserHandler.AddUser(new AddUserArgs2 {
    UserName = "Joe Bloggs",
    Age = 23,
    Password = "xyzzy" });
NewUserId = result.UserId;
SessionId = result.SessionId;

IUserHandler2 UserHandler2 = UserHandler as IUserHandler2;
if (UserHandler2 != null)
{
    LoginUserResult loginResult = UserHandler2.LoginUser(new LoginUserArgs {
        UserId = NewUserId,
        SessionId = SessionId,
        Password = "xyzzy" });
}
1
ответ дан 1 December 2019 в 14:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: