Author: Thiago Mata
(2009/03/13 03:05) Almost 3 years ago
code reflection auto load change and some bug fixed
1
<?php
2
3
CorujaComponentsManager::import("extendedReflection");
4
5
require_once( "CodeReflectionParameter.class.php" );
6
require_once( "CodeReflectionProperty.class.php" );
7
require_once( "CodeReflectionFunction.class.php" );
8
require_once( "CodeReflectionMethod.class.php" );
9
require_once( "CodeReflectionClass.class.php" );
10
?>
11
{
return array_pop( explode( "::" , parent::getName() ) );
}
public function getNamespace()
return array_shift( explode( "::" , parent::getName() ) );
12
13
14
public function createClassDefinitionCode()
15
16
$strCode = "";
17
$strCode .= " class " . $this->getClassName();
18
if( $this->getParentClass() != "" )
19
20
$strCode .= " extends " . $this->getParentClass()->getClassName();
21
22
if( sizeof( $this->getInterfaceNames() ) > 0)
23
...
25
$arrInterfaces = $this->getInterfaces();
26
foreach( $arrInterfaces as $objInterfaces )
27
28
$arrInterfacesClassName[] = $objInterfaces->getClassName();
29
30
$strCode .= " implements " . implode( ", " , $arrInterfacesClassName );
31
44
45
return $strCode;
46
47
48
public function createMethodsDefinitionCode()
49
50
56
57
58
59
60
public function getCode()
61
62
67
$strCode .= "\n}\n";
68
69
70
71
protected function createExtendedReflectionClass( ReflectionClass $objOriginalReflectionClass )
72
73
return new CodeReflectionClass( $objOriginalReflectionClass->getName() );
74
75
76
protected function createExtendedReflectionProperty( ReflectionProperty $objOriginalReflectionProperty )
77
78
return new CodeReflectionProperty( $this->getName() , $objOriginalReflectionProperty->getName() );
79
80
81
protected function createExtendedReflectionMethod( ReflectionMethod $objOriginalReflectionMethod )
82
83
return new CodeReflectionMethod( $this->getName() , $objOriginalReflectionMethod->getName() );
return new CodeReflectionParameter( $this->getDeclaringClass()->getName() , $this->getName() , $objReflectionParameter->getName() );
protected function createExtendedReflectionParameter( ReflectionParameter $objReflectionParameter )
return new CodeReflectionParameter( Array( $this->getDeclaringClass()->getName() , $this->getName() ) , $objReflectionParameter->getName() );
24
protected function createModifiersCode()
51
protected function createParametersCode()
52
53
54
$arrParameters = $this->getParameters();
55
$arrParametersName = array();
foreach( $arrParameters as $objParameter )
/*@var $objParameter CodeReflectionParameter */
$arrParametersName[] = $objParameter->getCode();
63
$strCode .= "(";
64
$strCode .= implode( ", " , $arrParametersName);
65
$strCode .= ")";
66
protected function createMethodHeaderCode()
$strCode = $this->getDocComment();
$strCode .= " function ";
$strCode .= $this->getName();
$strCode .= $this->createParametersCode();
return CorujaStringManipulation::retab( $strCode , 1 );
protected function createMethodContentCode()
89
$arrCodeReflectionFile = explode( "\n" , file_get_contents( $strFileName ) );
90
for( $intLine = $this->getStartLine(); $intLine < $this->getEndLine(); ++$intLine )
91
92
$strCode .= $arrCodeReflectionFile[ $intLine ] . "\n";
93
94
95
$strCode = trim( $strCode );
96
97
// remove the { }
98
if( $strCode[0] == "{" )
99
if( $this->getClass() != null )
$strCode .= $this->getClass()->getClassName() . " ";
*/
$strCode .= '$' . $this->getName();
32
33
34
35
36
37
38
protected function createExtendedReflectionFunction( ReflectionFunction $objOriginalReflectionFunction )
39
40
if( $objOriginalReflectionFunction instanceof ReflectionMethod )
41
42
return new CodeReflectionMethod( $objOriginalReflectionFunction->getName() );
43
else
$strCode .= ' = ' . var_export( $this->getDefaultValue() , true );
$strCode .= ";" . "\n";
CorujaComponentsManager::import("extendedReflection");?>?>{{{{{{{{$strCode .= " extends " . $this->getParentClass()->getClassName();{{{{$arrInterfacesClassName[] = $objInterfaces->getClassName();{{{{{{{{{{{{{{{{{{{{{{$arrParametersName[] = $objParameter->getCode();$strCode .= "(";$strCode .= "(";{{{{{{$strCode .= $arrCodeReflectionFile[ $intLine ] . "\n";// remove the { }// remove the { }if( $strCode[0] == "{" )if( $strCode[0] == "{" ){{{{}{{{{{{{{return new CodeReflectionMethod( $objOriginalReflectionFunction->getName() );{{{{