3v4l.org

run code in 300+ PHP versions simultaneously
<?php // This stands in for stdClass for this demo, because class_alias doesn't work with built-in classes class myStdClass{} class UserDefinedClass{} class_alias('myStdClass', 'DynamicObject'); $ud_obj = new UserDefinedClass(); $do_obj = new DynamicObject(); $sc_obj = new myStdClass(); echo "===[get_class()]===\n"; printf( "UserDefinedClass Object Class: %s\n", get_class($ud_obj)); printf( "DynamicObject Object Class: %s\n", get_class($do_obj)); printf( "myStdClass Object Class: %s\n", get_class($sc_obj)); echo "\n===[gettype()]===\n"; printf( "UserDefinedClass Object Type: %s\n", gettype($ud_obj)); printf( "DynamicObject Object Type: %s\n", gettype($do_obj)); printf( "myStdClass Object Type: %s\n", gettype($sc_obj)); echo "\n===[is_a(stdClass::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_a($ud_obj,stdClass::class)); printf( "DynamicObject Object Type: %s\n", is_a($do_obj,stdClass::class)); printf( "myStdClass Object Type: %s\n", is_a($sc_obj,stdClass::class)); echo "\n===[instanceof stdClass]===\n"; printf( "UserDefinedClass Object Type: %s\n", $ud_obj instanceof stdClass); printf( "DynamicObject Object Type: %s\n", $do_obj instanceof stdClass); printf( "myStdClass Object Type: %s\n", $sc_obj instanceof stdClass); echo "\n===[is_a(DynamicObject::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_a($ud_obj,DynamicObject::class)); printf( "DynamicObject Object Type: %s\n", is_a($do_obj,DynamicObject::class)); printf( "myStdClass Object Type: %s\n", is_a($sc_obj,DynamicObject::class)); echo "\n===[instanceof DynamicObject]===\n"; printf( "UserDefinedClass Object Type: %s\n", $ud_obj instanceof DynamicObject); printf( "DynamicObject Object Type: %s\n", $do_obj instanceof DynamicObject); printf( "myStdClass Object Type: %s\n", $sc_obj instanceof DynamicObject); echo "\n===[is_subclass_of(stdClass::class)]===\n"; printf( "UserDefinedClass Object Type: %s\n", is_subclass_of($ud_obj,stdClass::class)); printf( "DynamicObject Object Type: %s\n", is_subclass_of($do_obj,stdClass::class)); printf( "myStdClass Object Type: %s\n", is_subclass_of($sc_obj,stdClass::class));

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.120.0150.00520.80
8.4.110.0120.00818.72
8.4.100.0130.00717.64
8.4.90.0110.01020.58
8.4.80.0090.00919.04
8.4.70.0110.01118.80
8.4.60.0090.01218.64
8.4.50.0130.00918.80
8.4.40.0000.00817.81
8.4.30.0080.00420.48
8.4.20.0130.00619.82
8.4.10.0130.00319.31
8.3.250.0140.00418.84
8.3.240.0110.00816.55
8.3.230.0120.00616.83
8.3.220.0140.00519.05
8.3.210.0140.00816.78
8.3.200.0050.00516.64
8.3.190.0130.00817.07
8.3.180.0110.00919.14
8.3.170.0070.01120.84
8.3.160.0040.00417.52
8.3.150.0130.00317.32
8.3.140.0110.00420.50
8.3.130.0120.00918.50
8.3.120.0070.01018.60
8.3.110.0000.01020.94
8.3.100.0030.00624.06
8.3.90.0030.00526.77
8.3.80.0060.00316.75
8.3.70.0090.00616.63
8.3.60.0150.00418.30
8.3.50.0040.01118.26
8.3.40.0030.01021.86
8.3.30.0040.01118.54
8.3.20.0080.00024.18
8.3.10.0080.00024.66
8.3.00.0040.00426.16
8.2.290.0090.00716.55
8.2.280.0110.00920.04
8.2.270.0110.00718.85
8.2.260.0100.00018.14
8.2.250.0080.00416.80
8.2.240.0040.00417.21
8.2.230.0060.00322.58
8.2.220.0130.00637.54
8.2.210.0040.00426.77
8.2.200.0030.00616.63
8.2.190.0140.00716.63
8.2.180.0060.01025.92
8.2.170.0120.00918.97
8.2.160.0150.00322.96
8.2.150.0080.00025.66
8.2.140.0040.00424.66
8.2.130.0040.00426.16
8.2.120.0080.00021.04
8.2.110.0060.00320.53
8.2.100.0060.00320.53
8.1.330.0120.00715.85
8.1.320.0130.00618.03
8.1.310.0040.00422.25
8.1.300.0100.00017.63
8.1.290.0060.00318.88
8.1.280.0110.00725.92
8.1.270.0040.00423.99
8.1.260.0040.00426.35
8.1.250.0000.00828.09
8.1.240.0070.00318.51
8.1.230.0040.00722.01
8.0.100.0060.00216.96

preferences:
33.65 ms | 403 KiB | 5 Q