Пример #1
0
 public function test_substr()
 {
     //echo mb_internal_encoding();
     $this->assertEquals(Core_Strings::substr('string', 2), 'ring');
     $this->assertEquals(Core_Strings::substr('string', 2, 2), 'ri');
     $this->assertEquals(Core_Strings::substr('string', 2, 1), 'r');
     //		$enc = mb_internal_encoding();
     //		mb_internal_encoding("UTF-8");
     //		echo mb_internal_encoding();
     $this->assertEquals(Core_Strings::substr('Яблочный сироп', 2, 3, 'UTF-8'), 'лоч');
     //		mb_internal_encoding($enc);
 }
Пример #2
0
 /**
  * Преобразует значение полученное из БД в нужный формат, для работы с ним в php
  *
  * @param DB_ColumnMeta $metadata
  * @param               $value
  *
  * @return mixed
  */
 public function cast_column(DB_ColumnMeta $metadata, $value)
 {
     switch (true) {
         case $metadata->type == 'date':
             return is_null($value) ? null : Time::parse($value);
         case $metadata->type == 'timestamp':
             return is_null($value) ? null : Time::parse($value);
         case Core_Strings::starts_with($metadata->type, '_'):
             $arr = array();
             foreach (explode(',', Core_Strings::substr($value, 1, strlen($value) - 2)) as $element) {
                 $arr[] = $this->cast_column(new DB_ColumnMeta($metadata->name, Core_Strings::substr($metadata->type, 1), $metadata->length, $metadata->precision), ltrim(rtrim($element, '"'), '"'));
             }
             return $arr;
         case Core_Strings::starts_with($metadata->type, 'int'):
             return (int) $value;
         case in_array($metadata->type, array('varchar', 'text')):
             return (string) $value;
         case in_array($metadata->type, array('numeric', 'double', 'float')):
             return (double) $value;
         default:
             return $value;
     }
 }
Пример #3
0
 /**
  * @param string $method
  * @param array  $args
  *
  * @return mixed
  */
 public function __call($method, $args)
 {
     if (Core_Strings::ends_with($method, '_url')) {
         $redirect = false;
         // TODO: Ugly hack, needs refactoring
         if (Core_Strings::starts_with($method, 'redirect_to_')) {
             $redirect = true;
             $method = Core_Strings::substr($method, 12);
         }
         $parms = array();
         foreach ($this->completion_parms as $name) {
             if (isset($this->request[$name])) {
                 $parms[$name] = $this->request[$name];
             }
         }
         if (count($args) && is_array($args[count($args) - 1])) {
             if (count($parms)) {
                 $args[count($args) - 1] = Core_Arrays::merge($parms, $args[count($args) - 1]);
             }
         } else {
             if (count($parms)) {
                 $args[] = $parms;
             }
         }
         $url = method_exists($this->urls, $method) ? Core_Types::reflection_for($this->urls)->getMethod($method)->invokeArgs($this->urls, $args) : $this->urls->__call($method, $args);
         return $redirect ? $this->redirect_to($url) : $url;
     } else {
         throw new Core_MissingMethodException($method);
     }
 }