<?php
declare(strict_types=1);
error_reporting(E_ALL);
trait NumberSettingConstructor {
public function __construct() {
$this->number = 1234;
}
public function __set($name, $value) {
printf("UNEXPECTED SETTING OF %s\n", $name);
}
}
class ClassWithTypedProperty {
public int $number;
use NumberSettingConstructor;
}
class ClassWithInitializedTypedProperty {
public int $number = 0;
use NumberSettingConstructor;
}
class ClassWithTraditionalProperty {
public $number;
use NumberSettingConstructor;
}
printf("\n--- Typed Property ---\n");
print_r(new ClassWithTypedProperty());
printf("\n--- Typed Property (with Initialization) ---\n");
print_r(new ClassWithInitializedTypedProperty());
printf("\n--- Traditional Untyped Property ---\n");
print_r(new ClassWithTraditionalProperty());
Parse error: syntax error, unexpected 'int' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /in/0cT8r on line 18
Process exited with code 255.