<?php
class MyClass {
private $val = 1;
public function getVal()
{
return $this->val;
}
}
trait MyTrait {
public function cry()
{
echo "nya";
}
}
interface MyInterface {
public function say();
}
abstract class MyAbstract {
abstract public function shout();
}
function check($class_name) {
echo "================ ", $class_name, " ================= \n";
$h = new \ReflectionClass($class_name);
echo "abstract? ", $h->isAbstract() ? "true" : "false" , "\n";
echo "trait? ", $h->isTrait() ? "true" : "false" , "\n";
echo "interface? ", $h->isInterface() ? "true" : "false" , "\n";
echo "Instancable? ", $h->isInstantiable() ? "true" : "false" , "\n";
}
check("MyClass");
check("MyTrait");
check("MyInterface");
check("MyAbstract");
- Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 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
- ================ MyClass =================
abstract? false
trait? false
interface? false
Instancable? true
================ MyTrait =================
abstract? false
trait? true
interface? false
Instancable? false
================ MyInterface =================
abstract? true
trait? false
interface? true
Instancable? false
================ MyAbstract =================
abstract? true
trait? false
interface? false
Instancable? false
- 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
================ MyClass =================
abstract? false
trait? false
interface? false
Instancable? true
================ MyTrait =================
abstract? false
trait? true
interface? false
Instancable? false
================ MyInterface =================
abstract? true
trait? false
interface? true
Instancable? false
================ MyAbstract =================
abstract? true
trait? false
interface? false
Instancable? false
- Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
- ================ MyClass =================
abstract? false
trait? false
interface? false
Instancable? true
================ MyTrait =================
abstract? true
trait? true
interface? false
Instancable? false
================ MyInterface =================
abstract? true
trait? false
interface? true
Instancable? false
================ MyAbstract =================
abstract? true
trait? false
interface? false
Instancable? false
preferences:
165.2 ms | 403 KiB | 183 Q