This commit is contained in:
Jakub Míšek 2019-08-25 22:57:07 +02:00
Родитель 31e5041ef3
Коммит 1a335c4dc1
6 изменённых файлов: 99 добавлений и 2 удалений

Просмотреть файл

@ -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.";