<?php
class MyClass
{
public static $var = null;
protected $var = null;
public static $var = null;
protected $var = null;
private function myFunction() {}
public static function myFunction() {}
private function myFunction() {}
public static function myFunction() {}
private static function myFunction() {}
private static function myFunction() {}
public static function output()
{
// New in PHP 5.3
static::bar();
}
public static $var = null;
public static $var = null;
}
abstract class Foo
{
public static function getInstance()
{
return new static();
}
}
if ($geometry instanceof static || $geometry instanceof static) {
echo 'foo';
}
class MyClass1 {
use HelloWorld { sayHello as private; }
}
abstract class Foo
{
public static function getInstance()
{
return new /* comment */ static();
}
public static function output()
{
static /* comment */ :: bar();
}
}
class MyOtherClass
{
public $varK = array( 'a', 'b' );
protected $varK,
$varL,
$varM;
protected static $varK, $varL, $varM;
private
$varO = true,
$varP = array( 'a' => 'a', 'b' => 'b' ),
$varQ = 'string',
$varR = 123;
// Intentionally missing a semi-colon for testing.
public
$varS,
$varT
}
// Issue #3188 - static as return type.
public static function fCreate($attributes = []): static
{
return static::factory()->create($attributes);
}
public static function fCreate($attributes = []): ?static
{
return static::factory()->create($attributes);
}
// Also account for static used within union types.
public function fCreate($attributes = []): object|static
{
}
// Ensure that static as a scope keyword when preceeded by a colon which is not for a type declaration is still handled.
$callback = $cond ? get_fn_name() : static function ($a) { return $a * 10; };
class TypedProperties {
public int $var;
protected string $stringA, $stringB;
private bool
$boolA,
$boolB;
}
// PHP 8.0 constructor property promotion.
class ConstructorPropertyPromotionTest {
public function __construct(
public $x = 0.0,
protected $y = '',
private $z = null,
$normalParam,
) {}
}
class ConstructorPropertyPromotionWithTypesTest {
public function __construct(protected float|int $x, public ?string &$y = 'test', private mixed $z) {}
}
// PHP 8.1 readonly keywords.
class ReadonlyTest {
public readonly int $publicReadonlyProperty;
protected readonly int $protectedReadonlyProperty;
readonly protected int $protectedReadonlyProperty;
readonly private int $privateReadonlyProperty;
public function __construct(readonly protected float|int $x, public readonly ?string &$y = 'test') {}
}