dflydev/psr0-resource-locator

PSR-0 资源定位器

dev-master / 1.0.x-dev 2014-07-16 21:18 UTC

This package is auto-updated.

Last update: 2024-08-29 03:26:14 UTC


README

通过使用PSR-0映射定位命名空间路径的资源。

相对于同一包内的类定位资源可以通过__DIR__.'/../Resources'实现。这种方法的一个缺点是它仅适用于目标资源在同一包内的情况。

本项目旨在允许从任何命名空间定位资源,无论目标目录是否在同一包内。

使用“namespaceish”而不是“namespace”,因为这应该理解为我们在超载PSR-0约定来查找文件而不是PHP代码。实际上,我们可能经常在实际上并不是命名空间的命名空间下查找目录。

需求

安装

此库可以通过Composer安装。

用法

以下是一个使用Composer PSR-0资源定位器实现(dflydev/psr0-resource-locator-composer)的示例。

<?php

use Dflydev\Psr0ResourceLocator\Composer\ComposerResourceLocator;

$resourceLocator = new ComposerResourceLocator;

// Search all PSR-0 namespaces registered by Composer
// to find the first directory found looking like:
// "/Vendor/Project/Resources/mappings"
$mappingDirectory = $resourceLocator->findFirstDirectory(
    'Vendor\Project\Resources\mappings'
);

// Search all PSR-0 namespaces registered by Composer
// to find all templates directories looking like:
// "/Vendor/Project/Resources/templates"
$templateDirs = $resourceLocator->findDirectories(
    'Vendor\Project\Resources\templates',
);

在这些示例中使用Resources并不意味着只能找到/Resources/路径。实现应能够找到任何目录/目录,只要它们遵循PSR-0命名指南并且已注册映射

注意事项

请注意以下规则

  • 只有实际存在的资源才会被返回。
  • 检查命名空间顺序将由底层实现确定。然而,建议实现首先搜索更具体的命名空间前缀。也就是说,如果两者都已注册,则应先检查Foo\Bar\Baz而不是Foo\Bar

了解实现

Composer — dflydev/psr0-resource-locator-composer

Composer PSR-0资源定位器实现利用dflydev/composer-autoload定位在运行时使用的有效Composer自动加载器,并访问其命名空间映射。

对于任何使用Composer的项目,这就是您要查找的实现。

实现指南

确保首先搜索更具体的命名空间前缀。也就是说,如果两者都已注册,则应先检查Foo\Bar\Baz而不是Foo\Bar

许可

MIT,见LICENSE。

社区

如果您有问题或想帮忙,请加入irc.freenode.net上的#dflydev频道。

非原创

基于Spring Frameworkclasspath:概念。