Файл: gapps/vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php
Строк: 179
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SymfonyComponentVarDumperTestsCaster;
use SymfonyComponentVarDumperTestVarDumperTestTrait;
use SymfonyComponentVarDumperTestsFixturesGeneratorDemo;
use SymfonyComponentVarDumperTestsFixturesNotLoadableClass;
/**
* @author Nicolas Grekas <p@tchwork.com>
*/
class ReflectionCasterTest extends PHPUnit_Framework_TestCase
{
use VarDumperTestTrait;
public function testReflectionCaster()
{
$var = new ReflectionClass('ReflectionClass');
$this->assertDumpMatchesFormat(
<<<'EOTXT'
ReflectionClass {
+name: "ReflectionClass"
%Aimplements: array:%d [
0 => "Reflector"
%A]
constants: array:3 [
"IS_IMPLICIT_ABSTRACT" => 16
"IS_EXPLICIT_ABSTRACT" => 32
"IS_FINAL" => %d
]
properties: array:%d [
"name" => ReflectionProperty {
%A +name: "name"
+class: "ReflectionClass"
%A modifiers: "public"
}
%A]
methods: array:%d [
%A
"export" => ReflectionMethod {
+name: "export"
+class: "ReflectionClass"
%A parameters: {
$%s: ReflectionParameter {
%A position: 0
%A
}
EOTXT
, $var
);
}
public function testClosureCaster()
{
$a = $b = 123;
$var = function ($x) use ($a, &$b) {};
$this->assertDumpMatchesFormat(
<<<EOTXT
Closure {
%Aparameters: {
$x: {}
}
use: {
$a: 123
$b: & 123
}
file: "%sReflectionCasterTest.php"
line: "66 to 66"
}
EOTXT
, $var
);
}
public function testReflectionParameter()
{
$var = new ReflectionParameter(__NAMESPACE__.'reflectionParameterFixture', 0);
$this->assertDumpMatchesFormat(
<<<'EOTXT'
ReflectionParameter {
+name: "arg1"
position: 0
typeHint: "SymfonyComponentVarDumperTestsFixturesNotLoadableClass"
default: null
}
EOTXT
, $var
);
}
/**
* @requires PHP 7.0
*/
public function testReflectionParameterScalar()
{
$f = eval('return function (int $a) {};');
$var = new ReflectionParameter($f, 0);
$this->assertDumpMatchesFormat(
<<<'EOTXT'
ReflectionParameter {
+name: "a"
position: 0
typeHint: "int"
}
EOTXT
, $var
);
}
/**
* @requires PHP 7.0
*/
public function testReturnType()
{
$f = eval('return function ():int {};');
$line = __LINE__ - 1;
$this->assertDumpMatchesFormat(
<<<EOTXT
Closure {
returnType: "int"
class: "SymfonyComponentVarDumperTestsCasterReflectionCasterTest"
this: SymfonyComponentVarDumperTestsCasterReflectionCasterTest { …}
file: "%sReflectionCasterTest.php($line) : eval()'d code"
line: "1 to 1"
}
EOTXT
, $f
);
}
/**
* @requires PHP 7.0
*/
public function testGenerator()
{
$g = new GeneratorDemo();
$g = $g->baz();
$r = new ReflectionGenerator($g);
$xDump = <<<'EODUMP'
Generator {
this: SymfonyComponentVarDumperTestsFixturesGeneratorDemo { …}
executing: {
SymfonyComponentVarDumperTestsFixturesGeneratorDemo->baz(): {
%sGeneratorDemo.php:14: """
{n
yield from bar();n
}n
"""
}
}
}
EODUMP;
$this->assertDumpMatchesFormat($xDump, $g);
foreach ($g as $v) {
break;
}
$xDump = <<<'EODUMP'
array:2 [
0 => ReflectionGenerator {
this: SymfonyComponentVarDumperTestsFixturesGeneratorDemo { …}
trace: {
3. SymfonyComponentVarDumperTestsFixturesGeneratorDemo::foo() ==> yield(): {
src: {
%sGeneratorDemo.php:9: """
{n
yield 1;n
}n
"""
}
}
2. SymfonyComponentVarDumperTestsFixturesbar() ==> SymfonyComponentVarDumperTestsFixturesGeneratorDemo::foo(): {
src: {
%sGeneratorDemo.php:20: """
{n
yield from GeneratorDemo::foo();n
}n
"""
}
}
1. SymfonyComponentVarDumperTestsFixturesGeneratorDemo->baz() ==> SymfonyComponentVarDumperTestsFixturesbar(): {
src: {
%sGeneratorDemo.php:14: """
{n
yield from bar();n
}n
"""
}
}
}
}
1 => Generator {
executing: {
SymfonyComponentVarDumperTestsFixturesGeneratorDemo::foo(): {
%sGeneratorDemo.php:10: """
yield 1;n
}n
n
"""
}
}
}
]
EODUMP;
$this->assertDumpMatchesFormat($xDump, array($r, $r->getExecutingGenerator()));
}
}
function reflectionParameterFixture(NotLoadableClass $arg1 = null, $arg2)
{
}