コード例 #1
0
 /**
  * Returns all types
  *
  * @return  var[]
  */
 public function types()
 {
     return array($this->getClass(), Type::$VAR, Type::$VOID, \lang\Primitive::$BOOLEAN, \lang\Primitive::$STRING, \lang\Primitive::$INT, \lang\Primitive::$DOUBLE, \lang\ArrayType::forName('var[]'), \lang\MapType::forName('[:var]'));
 }
コード例 #2
0
 public function form_deserialize()
 {
     $req = new MemoryInputStream('name=Timm');
     $v = RestFormat::$FORM->read($req, \lang\MapType::forName('[:string]'));
     $this->assertEquals(array('name' => 'Timm'), $v);
 }
コード例 #3
0
ファイル: MapTypeTest.class.php プロジェクト: johannes85/core
 public function cast_raises_exceptions_for_non_arrays($value)
 {
     MapType::forName('[:var]')->cast($value);
 }
コード例 #4
0
 public function genericReturnValue()
 {
     $this->assertEquals('[:lang.Object]', $this->fixture->getMethod('getMap')->getReturnTypeName());
     $this->assertEquals(\lang\MapType::forName('[:lang.Object]'), $this->fixture->getMethod('getMap')->getReturnType());
 }
コード例 #5
0
 public function varMapAssignableFromIntMap()
 {
     $this->assertFalse(MapType::forName('[:var]')->isAssignableFrom('[:int]'));
 }
コード例 #6
0
ファイル: FieldsTest.class.php プロジェクト: johannes85/core
 public function mapFieldType()
 {
     $this->assertEquals(MapType::forName('[:lang.Object]'), $this->fixture->getField('map')->getType());
 }
コード例 #7
0
ファイル: TypeOfTest.class.php プロジェクト: johannes85/core
 public function intMap()
 {
     $this->assertEquals(MapType::forName('[:var]'), typeof(['one' => 1, 'two' => 2, 'three' => 3]));
 }
コード例 #8
0
 public function intMap()
 {
     $this->assertEquals(\lang\MapType::forName('[:var]'), typeof(array('one' => 1, 'two' => 2, 'three' => 3)));
 }
コード例 #9
0
ファイル: lang.base.php プロジェクト: johannes85/core
function typeof($arg)
{
    if ($arg instanceof \lang\Generic) {
        return new \lang\XPClass($arg);
    } else {
        if (null === $arg) {
            return \lang\Type::$VOID;
        } else {
            if ($arg instanceof \Closure) {
                $r = new \ReflectionFunction($arg);
                $signature = [];
                foreach ($r->getParameters() as $param) {
                    if ($param->isArray()) {
                        $signature[] = \lang\Primitive::$ARRAY;
                    } else {
                        if ($param->isCallable()) {
                            $signature[] = \lang\Primitive::$CALLABLE;
                        } else {
                            if (null === ($class = $param->getClass())) {
                                $signature[] = \lang\Type::$VAR;
                            } else {
                                $signature[] = new \lang\XPClass($class);
                            }
                        }
                    }
                }
                return new \lang\FunctionType($signature, \lang\Type::$VAR);
            } else {
                if (is_array($arg)) {
                    return 0 === key($arg) ? \lang\ArrayType::forName('var[]') : \lang\MapType::forName('[:var]');
                } else {
                    return \lang\Type::forName(gettype($arg));
                }
            }
        }
    }
}
コード例 #10
0
ファイル: TypeTest.class.php プロジェクト: johannes85/core
 public function mapOfString()
 {
     $this->assertEquals(MapType::forName('[:string]'), Type::forName('[:string]'));
 }
コード例 #11
0
 public function unmarshal_map_of_issues()
 {
     $issue1 = new IssueWithField(1, 'test1');
     $issue2 = new IssueWithField(2, 'test2');
     $this->assertEquals(['one' => $issue1, 'two' => $issue2], $this->fixture->unmarshal(MapType::forName('[:' . nameof($issue1) . ']'), ['one' => ['issue_id' => 1, 'title' => 'test1'], 'two' => ['issue_id' => 2, 'title' => 'test2']]));
 }