tests from recent issues
This commit is contained in:
Родитель
31e5041ef3
Коммит
1a335c4dc1
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
class TestClass extends \DateTime
|
||||
{
|
||||
}
|
||||
|
||||
$obj = new TestClass();
|
||||
|
||||
echo get_class($obj), PHP_EOL;
|
||||
echo get_class(clone $obj), PHP_EOL;
|
||||
|
||||
echo "Done.";
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
class BaseClass
|
||||
{
|
||||
private $var = 10;
|
||||
|
||||
public function testFunc()
|
||||
{
|
||||
return $this->var;
|
||||
}
|
||||
}
|
||||
|
||||
class TestClass extends BaseClass
|
||||
{
|
||||
public function testFunc()
|
||||
{
|
||||
return call_user_func_array("parent::testFunc", []);
|
||||
}
|
||||
}
|
||||
|
||||
echo (new TestClass())->testFunc(), PHP_EOL;
|
||||
|
||||
echo "Done.";
|
|
@ -1,8 +1,16 @@
|
|||
<?php
|
||||
|
||||
class C {
|
||||
const C = 1;
|
||||
}
|
||||
|
||||
function foo($a = C::C) {
|
||||
return func_num_args();
|
||||
}
|
||||
|
||||
function test(int $a, $b = ['*'])
|
||||
{
|
||||
echo $a , ", " , count($b);
|
||||
echo $a , ", " , count($b), PHP_EOL;
|
||||
}
|
||||
|
||||
$func = "test";
|
||||
|
@ -10,4 +18,6 @@ $args = [10];
|
|||
|
||||
$func(...$args);
|
||||
|
||||
echo "\nDone.";
|
||||
echo foo(), foo(1), foo(1, 2), PHP_EOL;
|
||||
|
||||
echo "Done.";
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
interface I {
|
||||
function f();
|
||||
}
|
||||
|
||||
class A {
|
||||
public function f() {}
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
public function f() {}
|
||||
}
|
||||
|
||||
class C extends B implements I {
|
||||
public function f() {}
|
||||
}
|
||||
|
||||
class D extends C {
|
||||
|
||||
}
|
||||
|
||||
function test() {
|
||||
$m = new ReflectionMethod("D", "f");
|
||||
|
||||
echo $m->class, PHP_EOL; // C
|
||||
echo $m->getPrototype()->class, PHP_EOL; // I
|
||||
|
||||
$m = new ReflectionMethod("B", "f");
|
||||
echo $m->getPrototype()->class, PHP_EOL; // A
|
||||
|
||||
try {
|
||||
echo $m->getPrototype()->getPrototype()->class, PHP_EOL; // ReflectionException
|
||||
}
|
||||
catch (Throwable $e) {
|
||||
echo "no prototype", PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
test();
|
||||
|
||||
echo "Done.";
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
interface TestInterface extends \ArrayAccess {
|
||||
}
|
||||
|
||||
function testFunc(TestInterface $obj) {
|
||||
echo isset($obj["hello_world"]) ? 1 : 0; // compiler crash https://github.com/peachpiecompiler/peachpie/issues/504
|
||||
}
|
||||
|
||||
echo "Done.";
|
Загрузка…
Ссылка в новой задаче