public bool $a;
public int $a;
public float $a;
public string $a;
public object $a;
public array $a;
public mixed $a;
public int|null $a;
public int|false $a;
public false | int $a;

(int) $a;
(string) $a;
(object) $a;
(array) $a;
(boolean) $a;
(integer) $a;

function f(): int {}
function f() :string {}
function f() : object {}
function f(): ?array {}
function f(): self {}
function f(): static {}
function f(): int|null {}
function f(): int|false {}

function foo(int $a,  string $b, ? object $c, ?array $d, self $e, static $f, int|null $g) {}

----------------------------------------------------

[
	["keyword", "public"], ["keyword", "bool"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "int"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "float"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "string"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "object"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "array"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "mixed"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "int"], ["operator", "|"], ["keyword", "null"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "int"], ["operator", "|"], ["keyword", "false"], ["variable", "$a"], ["punctuation", ";"],
	["keyword", "public"], ["keyword", "false"], ["operator", "|"], ["keyword", "int"], ["variable", "$a"], ["punctuation", ";"],

	["punctuation", "("], ["keyword", "int"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],
	["punctuation", "("], ["keyword", "string"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],
	["punctuation", "("], ["keyword", "object"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],
	["punctuation", "("], ["keyword", "array"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],
	["punctuation", "("], ["keyword", "boolean"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],
	["punctuation", "("], ["keyword", "integer"], ["punctuation", ")"], ["variable", "$a"], ["punctuation", ";"],

	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "int"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "string"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "object"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["operator", "?"], ["keyword", "array"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "self"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "static"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "int"], ["operator", "|"], ["keyword", "null"], ["punctuation", "{"], ["punctuation", "}"],
	["keyword", "function"], ["function", "f"], ["punctuation", "("], ["punctuation", ")"], ["punctuation", ":"], ["keyword", "int"], ["operator", "|"], ["keyword", "false"], ["punctuation", "{"], ["punctuation", "}"],

	["keyword", "function"], ["function", "foo"], ["punctuation", "("],
	["keyword", "int"], ["variable", "$a"], ["punctuation", ","],
	["keyword", "string"], ["variable", "$b"], ["punctuation", ","],
	["operator", "?"], ["keyword", "object"], ["variable", "$c"], ["punctuation", ","],
	["operator", "?"], ["keyword", "array"], ["variable", "$d"], ["punctuation", ","],
	["keyword", "self"], ["variable", "$e"], ["punctuation", ","],
	["keyword", "static"], ["variable", "$f"], ["punctuation", ","],
	["keyword", "int"], ["operator", "|"], ["keyword", "null"], ["variable", "$g"],
	["punctuation", ")"],
	["punctuation", "{"], ["punctuation", "}"]
]

----------------------------------------------------

Checks for types.