     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

    <?php
    /**
     * @type DTMF
     * constructs a legal dtmf where the dtmf is a subset of the valid
     * chars:
     *
     * Valid chars are '0123456789*#ABCD'
     * DTMFs need to url encoded before being
     * dispatched.
     */

    namespace Catapult;
    final class DTMF extends Types {
        /**
         * Initialize the dtmf
         * as a string
         * check if all characters
         * are valid
         */
        public static $valid = array(
          "0",
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "8",
          "9",
          "#",
          "A",
          "B",
          "C",
          "D",
          "#",
          "@"
        );

        public function __construct($dtmf='')
        {
          foreach (str_split($dtmf) as $c) {
            if (!(in_array($c, self::$valid))) {
              throw new \CatapultApiException("Invalid DTMF valid characters: " . implode(',', self::$valid));
            }
          }

          $this->dtmf = $dtmf;

        }

        /* DTMF needs to be urlencoded */
        public function __toString()
        {
          return urlencode($this->dtmf);
        }
    }