ICanBoogie/Validate master
  • Namespace
  • Class

Namespaces

  • ICanBoogie
    • Validate
      • Reader
      • Validation
      • Validator
      • ValidatorProvider

Classes

  • Context
  • Message
  • Render
  • Validation
  • ValidationErrors

Interfaces

  • Reader
  • Validator
  • ValidatorOptions
  • ValidatorProvider

Exceptions

  • ParameterIsMissing
  • ValidationFailed
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 
<?php

/*
 * This file is part of the ICanBoogie package.
 *
 * (c) Olivier Laviale <olivier.laviale@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace ICanBoogie\Validate;

/**
 * Renders messages and values.
 */
class Render
{
    static private $render_mapping = [

        'NULL' => 'render_null',
        'boolean' => 'render_boolean',
        'array' => 'render_array',
        'object' => 'render_object',

    ];

    /**
     * Renders a message into a string.
     *
     * @param Message $message
     *
     * @return string
     */
    static public function render_message(Message $message)
    {
        return strtr($message->format, self::build_replace($message->args));
    }

    /**
     * Renders value type.
     *
     * @param mixed $value
     *
     * @return string
     */
    static public function render_type($value)
    {
        return gettype($value);
    }

    /**
     * Renders a value into a string.
     *
     * @param mixed $value
     *
     * @return string
     */
    static public function render_value($value)
    {
        $mapping = self::$render_mapping;
        $type = gettype($value);

        if (isset($mapping[$type]))
        {
            $method = $mapping[$type];
            return static::$method($value);
        }

        if (!is_scalar($value))
        {
            return static::render_other($value);
        }

        return (string) $value;
    }

    /**
     * Creates replace array.
     *
     * @param array $args
     *
     * @return array
     */
    static protected function build_replace(array $args)
    {
        $replace = [];

        foreach ($args as $arg => $value)
        {
            $replace['{' . $arg . '}'] = static::render_value($value);
        }

        return $replace;
    }

    /**
     * Renders `null`.
     *
     * @return string
     */
    static protected function render_null()
    {
        return 'null';
    }

    /**
     * Renders a boolean.
     *
     * @param bool $value
     *
     * @return string
     */
    static protected function render_boolean($value)
    {
        return $value === false ? 'false' : 'true';
    }

    /**
     * Renders an array.
     *
     * @param array $value
     *
     * @return string
     */
    static protected function render_array(array $value)
    {
        return 'array{' . implode(', ', array_keys($value)) . '}';
    }

    /**
     * Renders an object.
     *
     * @param mixed $value
     *
     * @return string
     */
    static protected function render_object($value)
    {
        return 'instance ' . get_class($value);
    }

    /**
     * Renders other types.
     *
     * @param mixed $value
     *
     * @return string
     */
    static protected function render_other($value)
    {
        return 'type{' . gettype($value) . '}';
    }
}
ICanBoogie/Validate master API documentation generated by ApiGen