当前位置: 首页>>代码示例>>PHP>>正文


PHP ClassReflection::getDeclaringFile方法代码示例

本文整理汇总了PHP中Zend\Code\Reflection\ClassReflection::getDeclaringFile方法的典型用法代码示例。如果您正苦于以下问题:PHP ClassReflection::getDeclaringFile方法的具体用法?PHP ClassReflection::getDeclaringFile怎么用?PHP ClassReflection::getDeclaringFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Zend\Code\Reflection\ClassReflection的用法示例。


在下文中一共展示了ClassReflection::getDeclaringFile方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: getUseArray

 /**
  * @param ClassReflection $class
  * @return array
  */
 private function getUseArray(ClassReflection $class)
 {
     $usesNames = [];
     foreach ($class->getDeclaringFile()->getUses() as $use) {
         $usesNames[$use['use']] = $use['as'];
     }
     return $usesNames;
 }
开发者ID:mtymek,项目名称:class-dumper,代码行数:12,代码来源:CodeGenerator.php

示例2: getCacheCode

 /**
  * Generate code to cache from class reflection.
  * This is a total mess, I know. Just wanted to flesh out the logic.
  *
  * @todo Refactor into a class, clean up logic, DRY it up, maybe move
  *       some of this into Zend\Code
  * @param  ClassReflection $r
  * @return string
  */
 protected static function getCacheCode(ClassReflection $r)
 {
     $useString = '';
     $usesNames = array();
     if (count($uses = $r->getDeclaringFile()->getUses())) {
         foreach ($uses as $use) {
             $usesNames[$use['use']] = $use['as'];
             $useString .= "use {$use['use']}";
             if ($use['as']) {
                 $useString .= " as {$use['as']}";
             }
             $useString .= ";\n";
         }
     }
     $declaration = '';
     if ($r->isAbstract() && !$r->isInterface()) {
         $declaration .= 'abstract ';
     }
     if ($r->isFinal()) {
         $declaration .= 'final ';
     }
     if ($r->isInterface()) {
         $declaration .= 'interface ';
     }
     if (!$r->isInterface()) {
         $declaration .= 'class ';
     }
     $declaration .= $r->getShortName();
     $parentName = false;
     if (($parent = $r->getParentClass()) && $r->getNamespaceName()) {
         $parentName = array_key_exists($parent->getName(), $usesNames) ? $usesNames[$parent->getName()] ?: $parent->getShortName() : (0 === strpos($parent->getName(), $r->getNamespaceName()) ? substr($parent->getName(), strlen($r->getNamespaceName()) + 1) : '\\' . $parent->getName());
     } else {
         if ($parent && !$r->getNamespaceName()) {
             $parentName = '\\' . $parent->getName();
         }
     }
     if ($parentName) {
         $declaration .= " extends {$parentName}";
     }
     $interfaces = array_diff($r->getInterfaceNames(), $parent ? $parent->getInterfaceNames() : array());
     if (count($interfaces)) {
         foreach ($interfaces as $interface) {
             $iReflection = new ClassReflection($interface);
             $interfaces = array_diff($interfaces, $iReflection->getInterfaceNames());
         }
         $declaration .= $r->isInterface() ? ' extends ' : ' implements ';
         $declaration .= implode(', ', array_map(function ($interface) use($usesNames, $r) {
             $iReflection = new ClassReflection($interface);
             return array_key_exists($iReflection->getName(), $usesNames) ? $usesNames[$iReflection->getName()] ?: $iReflection->getShortName() : (0 === strpos($iReflection->getName(), $r->getNamespaceName()) ? substr($iReflection->getName(), strlen($r->getNamespaceName()) + 1) : '\\' . $iReflection->getName());
         }, $interfaces));
     }
     $classContents = $r->getContents(false);
     $classFileDir = dirname($r->getFileName());
     $classContents = trim(str_replace('__DIR__', sprintf("'%s'", $classFileDir), $classContents));
     $return = "\nnamespace " . $r->getNamespaceName() . " {\n" . $useString . $declaration . "\n" . $classContents . "\n}\n";
     return $return;
 }
开发者ID:andreas-serlo,项目名称:athene2,代码行数:66,代码来源:Module.php

示例3: getCacheCode

 /**
  * Generate code to cache from class reflection.
  *
  * @todo maybe move some of this into Zend\Code
  *
  * @param  ClassReflection $classReflection
  * @return string
  */
 public function getCacheCode(ClassReflection $classReflection)
 {
     $useString = $this->fileReflectionService->getUseString($classReflection->getDeclaringFile());
     $declaration = $this->classDeclarationService->getClassDeclaration($classReflection);
     $classContents = $classReflection->getContents(false);
     $classFileDir = dirname($classReflection->getFileName());
     $classContents = trim(str_replace('__DIR__', sprintf("'%s'", $classFileDir), $classContents));
     $return = "\nnamespace " . $classReflection->getNamespaceName() . " {\n" . $useString . $declaration . "\n" . $classContents . "\n}\n";
     return $return;
 }
开发者ID:berturion,项目名称:EdpSuperluminal,代码行数:18,代码来源:CacheCodeGenerator.php

示例4: getUseStringAndNames

 private function getUseStringAndNames(ClassReflection $classReflection)
 {
     $useString = '';
     $usesNames = array();
     if (count($uses = $classReflection->getDeclaringFile()->getUses())) {
         foreach ($uses as $use) {
             $usesNames[$use['use']] = $use['as'];
             $useString .= "use {$use['use']}";
             if ($use['as']) {
                 $useString .= " as {$use['as']}";
             }
             $useString .= ";\n";
         }
     }
     return array($useString, $usesNames);
 }
开发者ID:rgabruel,项目名称:refactoring-legacy-code,代码行数:16,代码来源:CacheCodeGenerator.php

示例5: getClassUseName

 public function getClassUseName(ClassReflection $currentClass, ClassReflection $useClass)
 {
     $useNames = $this->fileReflectionUseStatementService->getUseNames($currentClass->getDeclaringFile());
     $fullUseClassName = $useClass->getName();
     $classUseName = null;
     if (array_key_exists($fullUseClassName, $useNames)) {
         $classUseName = $useNames[$fullUseClassName] ?: $useClass->getShortName();
     } else {
         if (0 === strpos($fullUseClassName, $currentClass->getNamespaceName())) {
             $classUseName = substr($fullUseClassName, strlen($currentClass->getNamespaceName()) + 1);
         } else {
             $classUseName = '\\' . $fullUseClassName;
         }
     }
     return $classUseName;
 }
开发者ID:simon-barton,项目名称:EdpSuperluminal,代码行数:16,代码来源:ClassUseNameService.php

示例6: buildNamespace

 /**
  * Create namespace code
  *
  * @param string $namespace
  * @param Reflection\ClassReflection $class
  * @return string the namespace + class + uses
  * @todo Detect defined constants
  */
 protected function buildNamespace(Reflection\ClassReflection $class)
 {
     $code = "namespace {$class->getNamespaceName()} {" . PHP_EOL;
     $uses = array();
     // Reformat uses
     foreach ($class->getDeclaringFile()->getUses() as $use) {
         $uses[$use['use']] = $use['as'];
     }
     //Just sort the uses
     ksort($uses);
     // Create block by block
     $code .= $this->buildUses($uses);
     // @TODO $this->buildConstants($class);
     $code .= $this->buildClassDecleration($class);
     $code .= $this->buildExtend($uses, $class);
     $code .= $this->buildInterface($uses, $class);
     $code .= PHP_EOL . $this->buildContent($class) . PHP_EOL;
     $code .= "}" . PHP_EOL . PHP_EOL;
     // Clear reflection memory
     \Zend\Code\Scanner\CachingFileScanner::clearCache();
     return fwrite($this->handle, $code);
 }
开发者ID:jdolieslager,项目名称:celeritas,代码行数:30,代码来源:Cacher.php

示例7: testGetDeclaringFileReturnsFilename

 public function testGetDeclaringFileReturnsFilename()
 {
     $reflectionClass = new ClassReflection('ZendTest\\Code\\Reflection\\TestAsset\\TestSampleClass2');
     $this->assertContains('TestSampleClass2.php', $reflectionClass->getDeclaringFile()->getFileName());
 }
开发者ID:bradley-holt,项目名称:zf2,代码行数:5,代码来源:ClassReflectionTest.php


注:本文中的Zend\Code\Reflection\ClassReflection::getDeclaringFile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。