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


PHP XPClass::detailsForClass方法代码示例

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


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

示例1: canBeCachedViaXpRegistry

 public function canBeCachedViaXpRegistry()
 {
     with(\xp::$registry['details.' . ($fixture = 'DummyDetails')] = $details = $this->dummyDetails());
     $actual = \lang\XPClass::detailsForClass($fixture);
     unset(\xp::$registry['details.' . $fixture]);
     $this->assertEquals($details, $actual);
 }
开发者ID:xp-framework,项目名称:core,代码行数:7,代码来源:ClassDetailsTest.class.php

示例2: parseDetails

 public function parseDetails($class)
 {
     $details = XPClass::detailsForClass($class->getName());
     return isset($details['class']);
 }
开发者ID:xp-forge,项目名称:mirrors,代码行数:5,代码来源:ClassParsingPerformance.class.php

示例3: newinstance

function newinstance($spec, $args, $def = null)
{
    static $u = 0;
    if ('#' === $spec[0]) {
        $p = strrpos($spec, ' ');
        $annotations = substr($spec, 0, $p) . ' ';
        $spec = substr($spec, $p + 1);
    } else {
        $annotations = '';
    }
    // Create unique name
    $n = "·" . ++$u;
    if (0 === strncmp($spec, 'php.', 4)) {
        $spec = substr($spec, 4);
    } else {
        if (false === strpos($spec, '.')) {
            $spec = \lang\XPClass::nameOf($spec);
        }
    }
    // Handle generics, PHP types and all others.
    if (strstr($spec, '<')) {
        $class = \lang\Type::forName($spec);
        $type = $class->literal();
        $generic = xp::$meta[$class->getName()]['class'][DETAIL_GENERIC];
    } else {
        if (false === strpos($spec, '.')) {
            $type = $spec;
            $generic = null;
        } else {
            try {
                $type = xp::$loader->loadClass0($spec);
            } catch (\lang\ClassLoadingException $e) {
                xp::error($e->getMessage());
            }
            $generic = null;
        }
    }
    $name = strtr($type, '\\', '.') . $n;
    if (interface_exists($type)) {
        $decl = ['kind' => 'class', 'extends' => ['lang.Object'], 'implements' => ['\\' . $type], 'use' => []];
    } else {
        if (trait_exists($type)) {
            $decl = ['kind' => 'class', 'extends' => ['lang.Object'], 'implements' => [], 'use' => ['\\' . $type]];
        } else {
            $decl = ['kind' => 'class', 'extends' => ['\\' . $type], 'implements' => [], 'use' => []];
        }
    }
    $defined = \lang\ClassLoader::defineType($annotations . $name, $decl, $def);
    if (false === strpos($type, '\\')) {
        xp::$cn[$type . $n] = $spec . $n;
    }
    if ($generic) {
        \lang\XPClass::detailsForClass($name);
        xp::$meta[$name]['class'][DETAIL_GENERIC] = $generic;
    }
    if ($defined->hasConstructor()) {
        return $defined->getConstructor()->newInstance($args);
    } else {
        return $defined->newInstance();
    }
}
开发者ID:johannes85,项目名称:core,代码行数:61,代码来源:lang.base.php

示例4: typeAnnotations

 /** @return var */
 public function typeAnnotations()
 {
     $class = $this->typeName();
     $details = XPClass::detailsForClass($class);
     if ($details && $details['class'][DETAIL_ANNOTATIONS]) {
         return $this->annotationsOf($details['class'][DETAIL_ANNOTATIONS]);
     } else {
         return null;
     }
 }
开发者ID:xp-forge,项目名称:mirrors,代码行数:11,代码来源:FromReflection.class.php


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