["?string"], "b" => ["string"], "c" => [["string"], "allow_null" => true], "d" => [["string"], "allow_null" => false], ]; function test1() { $schema = self::SCHEMA1; $md = new Metadata($schema); self::assertSame("?string", $md->getType("a")->getPhpType()); self::assertSame("string", $md->getType("b")->getPhpType()); self::assertSame("?string", $md->getType("c")->getPhpType()); self::assertSame("string", $md->getType("d")->getPhpType()); self::assertSame([ "getA(): ?string", "getB(): string", "getC(): ?string", "getD(): string", ], Autogen::auto_getters_methods($schema, null, stdClass::class)); } const SCHEMA2 = [ "a" => ["?array"], "b" => ["array"], "c" => [["array"], "allow_null" => true], "d" => [["array"], "allow_null" => false], ]; function test2() { $schema = self::SCHEMA2; $md = new Metadata($schema); self::assertSame("?array", $md->getType("a")->getPhpType()); self::assertSame("array", $md->getType("b")->getPhpType()); self::assertSame("?array", $md->getType("c")->getPhpType()); self::assertSame("array", $md->getType("d")->getPhpType()); self::assertSame([ "getA(): ?array", "getB(): array", "getC(): ?array", "getD(): array", ], Autogen::auto_getters_methods($schema, null, stdClass::class)); } const SCHEMA3 = [ "a" => ["?array[]"], "b" => ["array[]"], "c" => [["array[]"], "allow_null" => true], "d" => [["array[]"], "allow_null" => false], ]; function test3() { $schema = self::SCHEMA3; $md = new Metadata($schema); self::assertSame("?array", $md->getType("a")->getPhpType()); self::assertSame("array", $md->getType("b")->getPhpType()); self::assertSame("?array", $md->getType("c")->getPhpType()); self::assertSame("array", $md->getType("d")->getPhpType()); self::assertSame([ "getA(): ?array", "getB(): array", "getC(): ?array", "getD(): array", ], Autogen::auto_getters_methods($schema, null, stdClass::class)); } }