Advertisement
fruffl

Scalar Proto

Apr 21st, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 19.91 KB | None | 0 0
  1.     /**
  2.      * ILLI
  3.      *
  4.      * @category   ILLI_System
  5.      * @package    ILLI
  6.      * @subpackage System
  7.      * @link       http://illi.be
  8.      * @license    http://l.illi.be
  9.      * @copyright  ILLI Conference
  10.      */
  11.     NAMESPACE ILLI\System;
  12.     USE ReflectionClass AS __INTERNAL_REFLECTIONCLASS;
  13.     USE ReflectionMethod    AS __INTERNAL_REFLECTIONMETHOD;
  14.     USE Exception       AS __INTERNAL_EXCEPTION;
  15.  
  16.     /**
  17.      * ILLI System Datatype Scalar
  18.      *
  19.      * common scalar functions
  20.      *
  21.      * @category   ILLI_System
  22.      * @package    ILLI
  23.      * @subpackage System
  24.      * @namespace  ILLI\System
  25.      * @link       http://illi.be
  26.      * @license    http://l.illi.be
  27.      * @copyright  ILLI Conference
  28.      * @since      2.0.0-1
  29.      * @version    2.0.0-1
  30.      * @abstract
  31.      */
  32.     INTERFACE iDataTypeScalar EXTENDS iDataType
  33.     {
  34.         public function toUpper();
  35.         public function toLower();
  36.         public function toTitle();
  37.        
  38.         public function toArray();
  39.     }
  40.  
  41.     /**
  42.      * ILLI System Trait DataTypeScalar
  43.      */
  44.     TRAIT tDataTypeScalar
  45.     {
  46.         public function toUpper()
  47.         {
  48.             $this->__value = mb_convert_case($this->__value, MB_CASE_UPPER, DataType::ENCODING);
  49.             return $this;
  50.         }
  51.        
  52.        
  53.         public function toLower()
  54.         {
  55.             $this->__value = mb_convert_case($this->__value, MB_CASE_LOWER, DataType::ENCODING);
  56.             return $this;
  57.         }
  58.        
  59.        
  60.         public function toTitle()
  61.         {
  62.             $this->__value = mb_convert_case($this->__value, MB_CASE_TITLE, DataType::ENCODING);
  63.             return $this;
  64.         }
  65.     }
  66.  
  67.     /**
  68.      * ILLI System Trait DataTypeScalarDelegate
  69.      */
  70.     TRAIT tDataTypeScalarDelegate
  71.     {
  72.         public function toUpper()
  73.         {
  74.             MemberMethod::each($this, __FUNCTION__);
  75.             return $this;
  76.         }
  77.        
  78.         public function toLower()
  79.         {
  80.             MemberMethod::each($this, __FUNCTION__);
  81.             return $this;
  82.         }
  83.        
  84.         public function toTitle()
  85.         {
  86.             MemberMethod::each($this, __FUNCTION__);
  87.             return $this;
  88.         }
  89.     }
  90.  
  91.     /**
  92.      * ILLI System Abstract Datatype Scalar
  93.      *
  94.      * generic functions for all scalar types
  95.      *
  96.      * @category    ILLI_System
  97.      * @package ILLI
  98.      * @subpackage  System
  99.      * @namespace   ILLI\System
  100.      * @link    http://illi.be
  101.      * @license http://l.illi.be
  102.      * @copyright   ILLI Conference
  103.      * @since   2.0.0-1
  104.      * @version 2.0.0-1
  105.      * @abstract
  106.      * @todo    priority (setter)
  107.      */
  108.     CLASS DataTypeScalar EXTENDS DataType IMPLEMENTS iSerializable, iDataTypeScalar
  109.     {
  110.         USE tDataTypeScalar;
  111.         USE tSerializable;
  112.        
  113.         /**
  114.          * original scalar value
  115.          * @var scalar
  116.          */
  117.         private $__init     = NULL;
  118.         private $__value    = NULL;
  119.        
  120.         /**
  121.          * serializable private properties
  122.          * @var array
  123.          * @static
  124.          */
  125.         private static $__serializable  =
  126.                         [
  127.                             '__value'
  128.                         ];
  129.        
  130.         public function __construct($value = NULL, Bits $BITS = NULL)
  131.         {
  132.             if(NULL !== $value
  133.             && FALSE === is_scalar($value))
  134.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_SCALAR);
  135.            
  136.             self::$__tSerializableProperties = self::$__serializable;
  137.            
  138.             $this->__init = $value;
  139.            
  140.             $this->set($value);
  141.         }
  142.        
  143.         public function reset()
  144.         {
  145.             $this->set($this->__init);
  146.             return $this;
  147.         }
  148.        
  149.         public function set($value)
  150.         {
  151.             if(NULL === $value)
  152.                 return $this;
  153.                
  154.             $this->__value = (TRUE === is_string($value))
  155.                 ? $this->normalizeEncoding($value)
  156.                 : $value;
  157.            
  158.             return $this;
  159.         }
  160.        
  161.         public function get()
  162.         {
  163.             return $this->__value;
  164.         }
  165.        
  166.         public static function isMultiByte($value)
  167.         {
  168.             return mb_strlen($value) !== strlen($value);
  169.         }
  170.        
  171.         public static function detectEncoding($value)
  172.         {
  173.             return mb_detect_encoding($value);
  174.         }
  175.        
  176.         public static function normalizeEncoding($value)
  177.         {
  178.             return (self::detectEncoding($value) !== DataType::ENCODING)
  179.                 ? mb_convert_encoding($value, DataType::ENCODING)
  180.                 : $value;
  181.         }
  182.        
  183.         public function __toString()
  184.         {
  185.             return $this->get();
  186.         }
  187.        
  188.         public function width()
  189.         {
  190.             return mb_strwidth($this->__value, DataType::ENCODING);
  191.         }
  192.        
  193.         public function length()
  194.         {
  195.             return mb_strlen($this->__value, DataType::ENCODING);
  196.         }
  197.        
  198.         public function toArray()
  199.         {
  200.             $strlen = $this->length();
  201.             $value  = $this->__value;
  202.            
  203.             $result = [];
  204.            
  205.             while($strlen > 0)
  206.             {
  207.                 $result[]   = mb_substr($value, 0, 1,   DataType::ENCODING);
  208.                 $value      = mb_substr($value, 1, $strlen, DataType::ENCODING);
  209.                 $strlen     = mb_strlen($value);
  210.             }
  211.            
  212.             return $result;
  213.         }
  214.     }
  215.  
  216.     /**
  217.      * ILLI System Datatype ScalarArray
  218.      *
  219.      * typesafe/autocast values to DatatypeScalar
  220.      *
  221.      * @category    ILLI_System
  222.      * @package ILLI
  223.      * @subpackage  System
  224.      * @namespace   ILLI\System
  225.      * @link    http://illi.be
  226.      * @license http://l.illi.be
  227.      * @copyright   ILLI Conference
  228.      * @since   2.0.0-1
  229.      * @version 2.0.0-1
  230.      * @abstract
  231.      * @todo    priority (setter)
  232.      */
  233.     CLASS DataTypeScalarArray EXTENDS DataTypeArray IMPLEMENTS iDataTypeScalar
  234.     {
  235.         USE tDataTypeScalarDelegate;
  236.        
  237.         /**
  238.          * @param array|DataTypeArray $array initial value
  239.          */
  240.         public function __construct($array = [], Bits $BITS = NULL)
  241.         {
  242.             if(NULL === $array)
  243.                 $array = [];
  244.                
  245.             if($array instanceOf DataTypeScalarArray
  246.             || $array instanceOf DataTypeScalarArraySegment)
  247.                 $array = $array->toArray();
  248.            
  249.             if(FALSE === is_array($array))
  250.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_ARRAY);
  251.            
  252.             foreach($array as $index => $value)
  253.             {
  254.                 try
  255.                 {
  256.                     if(FALSE === is_scalar($value)
  257.                     && FALSE === ($value instanceOf DataTypeScalar))
  258.                         throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalar']);
  259.                 }
  260.                 catch(ArgumentException $e)
  261.                 {
  262.                     throw new ArgumentOutOfRangeException(E::ARGUMENT_DATATYPE_OUT_OF_RANGE, $e, [
  263.                         'key' => $index,
  264.                         'type' => gettype($value)
  265.                     ]);
  266.                 }
  267.                
  268.                 if(TRUE === is_scalar($value))
  269.                     $array[$index] = new DataTypeScalar($value);
  270.             }
  271.            
  272.             parent::__construct($array, $BITS);
  273.         }
  274.        
  275.         // ArrayAccess
  276.        
  277.         public function offsetSet($offset, $value)
  278.         {
  279.             if(TRUE === is_scalar($value))
  280.                 return parent::offsetSet($offset, new DataTypeScalar($value));
  281.                
  282.             if(TRUE === ($value instanceOf DataTypeScalar))
  283.                 return parent::offsetSet($offset, $value);
  284.            
  285.             throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalar']);
  286.         }
  287.        
  288.         // IndexAccess
  289.        
  290.         public function indexSet($index, $value)
  291.         {
  292.             if(TRUE === is_scalar($value))
  293.                 return parent::indexSet($offset, new DataTypeScalar($value));
  294.                
  295.             if(TRUE === ($value instanceOf DataTypeScalar))
  296.                 return parent::indexSet($offset, $value);
  297.            
  298.             throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalar']);
  299.         }
  300.        
  301.         public function merge($array)
  302.         {
  303.             if(FALSE === is_array($array)
  304.             && FALSE === ($array instanceOf DataTypeScalarArray))
  305.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_ARRAY);
  306.            
  307.             if(FALSE === (bool) $array)
  308.                 return $this;
  309.                
  310.             foreach($array as $k => $v)
  311.             {
  312.                 try
  313.                 {
  314.                     if(FALSE === is_scalar($v)
  315.                     && FALSE === ($v instanceOf DataTypeScalar))
  316.                         throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalar']);
  317.                 }
  318.                 catch(ArgumentException $e)
  319.                 {
  320.                     throw new ArgumentOutOfRangeException(E::ARGUMENT_DATATYPE_OUT_OF_RANGE, $e, [
  321.                         'key' => $index,
  322.                         'type' => gettype($value)
  323.                     ]);
  324.                 }
  325.            
  326.                 if(TRUE === is_scalar($v))
  327.                     $array[$k] = new DataTypeScalar($v);
  328.             }
  329.            
  330.             return parent::merge($array);
  331.         }
  332.        
  333.         /**
  334.          * append or prepend offset by IT_MODE_FI
  335.          */
  336.         public function insert($index, $value)
  337.         {
  338.             if(FALSE === is_scalar($value)
  339.             && FALSE === ($value instanceOf DataTypeScalar))
  340.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalar']);
  341.            
  342.             if(TRUE === is_scalar($value))
  343.                 $value = new DataTypeScalar($value);
  344.            
  345.             return parent::insert($index, $value);
  346.         }
  347.     }
  348.  
  349.     /**
  350.      * ILLI System Datatype ScalarArraySegment
  351.      *
  352.      * typesafe/autocast array to DatatypeScalarArray
  353.      *
  354.      * @category   ILLI_System
  355.      * @package    ILLI
  356.      * @subpackage System
  357.      * @namespace  ILLI\System
  358.      * @link       http://illi.be
  359.      * @license    http://l.illi.be
  360.      * @copyright  ILLI Conference
  361.      * @since      2.0.0-1
  362.      * @version    2.0.0-1
  363.      * @abstract
  364.      */
  365.     CLASS DataTypeScalarArraySegment EXTENDS DataTypeArraySegment IMPLEMENTS iDataTypeScalar
  366.     {
  367.         USE tDataTypeScalarDelegate;
  368.        
  369.         public function __construct($DTA, $startIndex = NULL, $length = NULL)
  370.         {
  371.             if(FALSE === ($DTA instanceOf DataTypeScalarArray)
  372.             && FALSE === is_array($DTA))
  373.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'DataTypeScalarArray']);
  374.            
  375.             $DTA = ($DTA instanceOf DataTypeScalarArray)
  376.                 ? $DTA
  377.                 : new DataTypeScalarArray($DTA);
  378.            
  379.             parent::__construct($DTA, $startIndex, $length);
  380.         }
  381.     }
  382.  
  383.  
  384.  
  385.     /**
  386.      * ILLI System Member Method Delegation
  387.      *
  388.      * @category   ILLI_System
  389.      * @package    ILLI
  390.      * @subpackage System
  391.      * @namespace  ILLI\System
  392.      * @link       http://illi.be
  393.      * @license    http://l.illi.be
  394.      * @copyright  ILLI Conference
  395.      * @since      2.0.0-1
  396.      * @version    2.0.0-1
  397.      * @abstract
  398.      */
  399.     ABSTRACT CLASS MemberMethod EXTENDS Member
  400.     {
  401.         public static function each($memberList, $method, $args = [])
  402.         {
  403.             if(FALSE === ($memberList instanceOf iIterator))
  404.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_INSTANCE, ['instance' => 'iIterator']);
  405.            
  406.             $result = [];
  407.            
  408.             foreach($memberList as $index => $member)
  409.                 try
  410.                 {
  411.                     $result[] = MemberMethod::call($member, $method, $args);
  412.                 }
  413.                 catch(MemberMethodRuntimeException $e)
  414.                 {
  415.                     throw new MemberMethodRuntimeStackException($e, [
  416.                         'memberlist'    => get_class($memberList),
  417.                         'key'       => $index,
  418.                         'exception' => get_class($e)]);
  419.                 }
  420.            
  421.             return $result;
  422.         }
  423.        
  424.         public static function call($member, $method, $args = [])
  425.         {
  426.             if(NULL === $member)
  427.                 throw new ArgumentNullException;
  428.                
  429.             if(FALSE === is_object($member))
  430.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_MEMBER);
  431.                
  432.             if(NULL === $method)
  433.                 throw new ArgumentNullException;
  434.                
  435.             if(FALSE === is_string($method))
  436.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_STRING);
  437.                
  438.             if($method === '')
  439.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_STRING_EMPTY);
  440.                
  441.             if(FALSE === is_array($args))
  442.                 throw new ArgumentException(E::ARGUMENT_EXPECTED_ARRAY);
  443.            
  444.             if(FALSE === method_exists($member, $method))
  445.                 throw new MemberMethodNotFoundException(
  446.                     ['member' => get_class($member), 'method' => $method]);
  447.        
  448.             if(FALSE === is_callable(array($member, $method)))
  449.                 throw new MemberMethodNotCallableException(
  450.                     ['member' => get_class($member), 'method' => $method]);
  451.                
  452.             $result = NULL;
  453.            
  454.             try
  455.             {
  456.                 switch(sizeOf($args)):
  457.                     case 0:
  458.                         $result = $member->$method();
  459.                         break;
  460.                     case 1:
  461.                         $result = $member->$method
  462.                         (
  463.                             $args[0]
  464.                         );
  465.                         break;
  466.                     case 2:
  467.                         $result = $member->$method
  468.                         (
  469.                             $args[0], $args[1]
  470.                         );
  471.                         break;
  472.                     case 3:
  473.                         $result = $member->$method
  474.                         (
  475.                             $args[0], $args[1], $args[2]
  476.                         );
  477.                         break;
  478.                     case 4:
  479.                         $result = $member->$method
  480.                         (
  481.                             $args[0], $args[1], $args[2], $args[3]
  482.                         );
  483.                         break;
  484.                     case 5:
  485.                         $result = $member->$method
  486.                         (
  487.                             $args[0], $args[1], $args[2], $args[3], $args[4]
  488.                         );
  489.                         break;
  490.                     case 6:
  491.                         $result = $member->$method
  492.                         (
  493.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]
  494.                         );
  495.                         break;
  496.                     case 7:
  497.                         $result = $member->$method
  498.                         (
  499.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  500.                             $args[6]
  501.                         );
  502.                         break;
  503.                     case 8:
  504.                         $result = $member->$method
  505.                         (
  506.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  507.                             $args[6], $args[7]
  508.                         );
  509.                         break;
  510.                     case 9:
  511.                         $result = $member->$method
  512.                         (
  513.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  514.                             $args[6], $args[7], $args[8]
  515.                         );
  516.                         break;
  517.                     case 10:
  518.                         $result = $member->$method
  519.                         (
  520.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  521.                             $args[6], $args[7], $args[8], $args[9]
  522.                         );
  523.                         break;
  524.                     case 11:
  525.                         $result = $member->$method
  526.                         (
  527.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  528.                             $args[6], $args[7], $args[8], $args[9], $args[10]
  529.                         );
  530.                         break;
  531.                     case 12:
  532.                         $result = $member->$method
  533.                         (
  534.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  535.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11]
  536.                         );
  537.                         break;
  538.                     case 13:
  539.                         $result = $member->$method
  540.                         (
  541.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  542.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  543.                             $args[12]
  544.                         );
  545.                         break;
  546.                     case 14:
  547.                         $result = $member->$method
  548.                         (
  549.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  550.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  551.                             $args[12], $args[13]
  552.                         );
  553.                         break;
  554.                     case 15:
  555.                         $result = $member->$method
  556.                         (
  557.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  558.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  559.                             $args[12], $args[13], $args[14]
  560.                         );
  561.                         break;
  562.                     case 16:
  563.                         $result = $member->$method
  564.                         (
  565.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  566.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  567.                             $args[12], $args[13], $args[14], $args[15]
  568.                         );
  569.                         break;
  570.                     case 17:
  571.                         $result = $member->$method
  572.                         (
  573.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  574.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  575.                             $args[12], $args[13], $args[14], $args[15], $args[16]
  576.                         );
  577.                         break;
  578.                     case 18:
  579.                         $result = $member->$method
  580.                         (
  581.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  582.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  583.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17]
  584.                         );
  585.                         break;
  586.                     case 19:
  587.                         $result = $member->$method
  588.                         (
  589.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  590.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  591.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  592.                             $args[18]
  593.                         );
  594.                         break;
  595.                     case 20:
  596.                         $result = $member->$method
  597.                         (
  598.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  599.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  600.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  601.                             $args[18], $args[19]
  602.                         );
  603.                         break;
  604.                     case 21:
  605.                         $result = $member->$method
  606.                         (
  607.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  608.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  609.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  610.                             $args[18], $args[19], $args[20]
  611.                         );
  612.                         break;
  613.                     case 22:
  614.                         $result = $member->$method
  615.                         (
  616.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  617.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  618.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  619.                             $args[18], $args[19], $args[20], $args[21]
  620.                         );
  621.                         break;
  622.                     case 23:
  623.                         $result = $member->$method
  624.                         (
  625.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  626.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  627.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  628.                             $args[18], $args[19], $args[20], $args[21], $args[22]
  629.                         );
  630.                         break;
  631.                     case 24:
  632.                         $result = $member->$method
  633.                         (
  634.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  635.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  636.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  637.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23]
  638.                         );
  639.                         break;
  640.                     case 25:
  641.                         $result = $member->$method
  642.                         (
  643.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  644.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  645.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  646.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  647.                             $args[24]
  648.                         );
  649.                         break;
  650.                     case 26:
  651.                         $result = $member->$method
  652.                         (
  653.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  654.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  655.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  656.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  657.                             $args[24], $args[25]
  658.                            
  659.                         );
  660.                         break;
  661.                     case 27:
  662.                         $result = $member->$method
  663.                         (
  664.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  665.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  666.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  667.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  668.                             $args[24], $args[25], $args[26]
  669.                            
  670.                         );
  671.                         break;
  672.                     case 28:
  673.                         $result = $member->$method
  674.                         (
  675.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  676.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  677.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  678.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  679.                             $args[24], $args[25], $args[26], $args[27]
  680.                            
  681.                         );
  682.                         break;
  683.                     case 29:
  684.                         $result = $member->$method
  685.                         (
  686.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  687.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  688.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  689.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  690.                             $args[24], $args[25], $args[26], $args[27], $args[28]
  691.                            
  692.                         );
  693.                         break;
  694.                     case 30:
  695.                         $result = $member->$method
  696.                         (
  697.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  698.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  699.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  700.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  701.                             $args[24], $args[25], $args[26], $args[27], $args[28], $args[29]
  702.                            
  703.                         );
  704.                         break;
  705.                     case 31:
  706.                         $result = $member->$method
  707.                         (
  708.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  709.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  710.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  711.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  712.                             $args[24], $args[25], $args[26], $args[27], $args[28], $args[29],
  713.                             $args[30]
  714.                            
  715.                         );
  716.                         break;
  717.                     case 32:
  718.                         $result = $member->$method
  719.                         (
  720.                             $args[0], $args[1], $args[2], $args[3], $args[4], $args[5],
  721.                             $args[6], $args[7], $args[8], $args[9], $args[10], $args[11],
  722.                             $args[12], $args[13], $args[14], $args[15], $args[16], $args[17],
  723.                             $args[18], $args[19], $args[20], $args[21], $args[22], $args[23],
  724.                             $args[24], $args[25], $args[26], $args[27], $args[28], $args[29],
  725.                             $args[30], $args[32]
  726.                            
  727.                         );
  728.                         break;
  729.                     default:
  730.                         $result = call_user_func_array([$member, $method], $args);
  731.                 endswitch;
  732.             }
  733.             catch(__INTERNAL_EXCEPTION $e)
  734.             {
  735.                 throw new MemberMethodRuntimeException($e, [
  736.                     'exception' => get_class($e),
  737.                     'member'    => get_class($member),
  738.                     'method'    => $method
  739.                     ]);
  740.             }
  741.            
  742.             return $result;
  743.         }
  744.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement