Как создать одноэлементный класс PHP для обработки запросов? - PullRequest
0 голосов
/ 13 августа 2010

думал о создании класса Single под названием «Request» для обработки и очистки переменных POST и GET, но, будучи новичком в одноэлементном шаблоне, я не уверен, как его реализовать.В идеале я хотел бы иметь 2 функции post ($ name, $ clean) и get ($ name, $ clean) - $ clean, являющиеся логическим значением, чтобы определить, следует ли обрезать / экранировать значение

Ответы [ 2 ]

1 голос
/ 13 августа 2010

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

Как говорится, я говорю, пойти на это. Я понимаю, почему вы хотели бы. Мысль: «Я хочу, чтобы все было очищено для инъекций (и т. Д.), И таким образом я могу быть уверенным, что это произойдет на каждом входе».

Позвольте мне пролить немного света. Почему бы не реализовать один метод, использующий $ _REQUEST, который будет обрабатывать как $ _GET, так и $ _POST? Хотя этот подход может быть простым, он поможет вам начать работу.

$cleanser = Cleanser::singleton();
$new_request_array = $cleanser->clean($_REQUEST);

class Cleanser
{
    private static $instance;
    private function __construct() { }

    public static function singleton() {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        return self::$instance;
    }

    public function clean($request) {
        foreach($request as $key => $value) {
            // perform any cleansing here
            $cleansed[$key] = trim($value);
        }

        return $cleansed;
    }

    public function __clone() {
        trigger_error('Clone is not allowed.', E_USER_ERROR);
    }
}

Получайте удовольствие и помните, что в обучении нет ничего «неправильного» или «неправильного». Я думаю, что именно такой подход пытается использовать StackOverflow. Мы здесь, чтобы научиться делать что-то, а не судить о нашей реализации. Так что веселись!

0 голосов
/ 13 августа 2010

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

Несмотря на грубое упрощение, синглтоны способны ограничивать / контролировать доступ к ограниченному ресурсу, что на самом деле не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...