<?php
class shapeClass {
public function __set($name, $value) {
//if (!property_exists($this, $name)) {
throw new Exception("No such property: $name");
//}
//$this->{$name} = $value;
}
public function __get($name) {
//if (!property_exists($this, $name)) {
throw new Exception("No such property: $name");
//}
//return $this->{$name};
}
}
/* Declaring your struct/shape */
$person = new class() extends shapeClass {
public $age = 15, $height = 72, $weight = 200;
};
var_dump($person);
var_dump($person->age);
$person->age = 19;
var_dump($person->age);
try {
var_dump($person->badProp);
} catch (Exception $e) {
var_dump($e);
}
try {
$person->badProp = 5;
} catch (Exception $e) {
var_dump($e);
}
- Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- object(shapeClass@anonymous)#1 (3) {
["age"]=>
int(15)
["height"]=>
int(72)
["weight"]=>
int(200)
}
int(15)
int(19)
object(Exception)#2 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(12)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(30)
["function"]=>
string(5) "__get"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
string(7) "badProp"
}
}
}
["previous":"Exception":private]=>
NULL
}
object(Exception)#3 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(6)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(36)
["function"]=>
string(5) "__set"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(7) "badProp"
[1]=>
int(5)
}
}
}
["previous":"Exception":private]=>
NULL
}
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(shapeClass@anonymous)#1 (3) {
["age"]=>
int(15)
["height"]=>
int(72)
["weight"]=>
int(200)
}
int(15)
int(19)
object(Exception)#2 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(12)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(30)
["function"]=>
string(5) "__get"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
string(7) "badProp"
}
}
}
["previous":"Exception":private]=>
NULL
}
object(Exception)#3 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(6)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(36)
["function"]=>
string(5) "__set"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(7) "badProp"
[1]=>
int(5)
}
}
}
["previous":"Exception":private]=>
NULL
}
- Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
- object(class@anonymous)#1 (3) {
["age"]=>
int(15)
["height"]=>
int(72)
["weight"]=>
int(200)
}
int(15)
int(19)
object(Exception)#2 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(12)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(30)
["function"]=>
string(5) "__get"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
string(7) "badProp"
}
}
}
["previous":"Exception":private]=>
NULL
}
object(Exception)#3 (7) {
["message":protected]=>
string(25) "No such property: badProp"
["string":"Exception":private]=>
string(0) ""
["code":protected]=>
int(0)
["file":protected]=>
string(9) "/in/RrG1H"
["line":protected]=>
int(6)
["trace":"Exception":private]=>
array(1) {
[0]=>
array(6) {
["file"]=>
string(9) "/in/RrG1H"
["line"]=>
int(36)
["function"]=>
string(5) "__set"
["class"]=>
string(10) "shapeClass"
["type"]=>
string(2) "->"
["args"]=>
array(2) {
[0]=>
string(7) "badProp"
[1]=>
int(5)
}
}
}
["previous":"Exception":private]=>
NULL
}
- Output for 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.21
- Parse error: syntax error, unexpected 'class' (T_CLASS) in /in/RrG1H on line 19
Process exited with code 255.
preferences:
200.1 ms | 402 KiB | 242 Q