corneltek/classmap

此包最新版本(1.0.2)没有可用的许可证信息。

1.0.2 2013-11-08 09:22 UTC

This package is auto-updated.

Last update: 2024-08-29 03:47:34 UTC


README

ClassMap生成器生成类映射哈希值,以提升类加载性能。

通常,SplClassLoader使用PSR-0类命名规则和PEAR类命名规则来检查类路径以自动加载类,但当需要大量类时,这会花费很多。

ClassMap生成器将类文件映射到一个纯PHP数组文件中,您可以简单地require它来找到类文件。

$classMap = require 'class_map.php';
$path = $classMap['PHPUnit'];   // returns path to PHPUnit classfile.

我们决定使用PHP格式作为我们的类映射文件格式,因为它从PHP中包含起来非常简单,并且编译后的类映射文件可以被APC缓存。

要求

  • PHP5.3
  • 反射扩展。

通过Composer安装

$ composer require corneltek/classmap

通过PEAR安装

$ sudo pear install pear.corneltek.com/ClassMap

摘要

$ ./classmap.phar src

编译如下哈希映射文件

<?php return array (
    'Universal\\ClassLoader\\SplClassLoader' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/Universal/ClassLoader/SplClassLoader.php',
    'GetOptionKit\\GetOptionKit' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/GetOptionKit.php',
    'GetOptionKit\\OptionSpecCollection' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/OptionSpecCollection.php',
    'GetOptionKit\\OptionParser' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/OptionParser.php',
    'GetOptionKit\\OptionSpec' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/OptionSpec.php',
    'GetOptionKit\\OptionResult' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/OptionResult.php',
    'GetOptionKit\\Argument' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/GetOptionKit/Argument.php',
    'ClassMap\\Generator' => 'phar:///Users/c9s/git/Work/ClassMap/classmap.phar/ClassMap/Generator.php',
);

因此,您可以从PHP应用程序中require此类映射文件

$map = require 'classmap.php';

API摘要

    <?php
    $mapGen = new ClassMap\Generator();
    $mapGen->addDir( 'path/to/library' );
    $mapGen->addFile( $file );
    $mapGen->addClass( $class, $file );
    $mapGen->generateFile( 'class_map.php', 'php' );

    $mapGen->autoload = true or false;  // turn on autoloader

生成json格式字典

$mapGen->generate( 'class_map.php', 'json' );

类映射文件格式

return array(
    'class' => 'path/to/file.php',
);

作者

Yo-An Lin cornelius.howl@gmail.com