exorg/autoloader

可扩展的通用自动加载器。

2.0.0 2024-05-18 16:34 UTC

This package is not auto-updated.

Last update: 2024-09-21 18:13:16 UTC


README

PHP workflow

可扩展的通用自动加载器。

入门

先决条件

说明假设使用Linux操作系统或其他操作系统的兼容工具。

安装

需要php8.*-cli, Git和Composer

将Autoloader安装到项目源代码中的推荐方法是将其作为代码依赖项通过Composer处理。需要Git从版本控制存储库获取包。

安装Composer需要php8.*-cli

Autoloader安装

通过运行以下命令在您的composer.json文件中添加适当的条目

composer require exorg/autoloader

如果处于项目设置阶段且尚未安装任何依赖项,则运行

composer install

如果之前已安装其他依赖项,则运行

composer update

使用方法

在可执行文件中自动加载所需的所有文件的最简单方法是附加Composer(在运行composer installcomposer update命令后)生成的autoload.php文件,如下例所示

require_once (__DIR__ . '/vendor/autoload.php');

PSR-4自动加载器

.
└── src
    └── Subject
        └── Core
            └── SomeComponent.php
<?php

namespace Vendor\Package\Subject\Core;

class SomeComponent
{

}
<?php

declare(strict_types=1);

require_once (__DIR__ . '/vendor/autoload.php');

use ExOrg\Autoloader\Autoloader;
use ExOrg\Autoloader\Psr4AutoloadingStrategy;

$psr4Strategy = new Psr4AutoloadingStrategy();
$psr4Strategy->registerNamespacePath('Vendor\Package', './src');

$autoloader = new Autoloader();
$autoloader->setAutoloadingStrategy($psr4Strategy);
$autoloader->register();

$component = new Vendor\Package\Subject\Core\SomeComponent();

$autoloader->unregister();

PSR-0自动加载器

.
└── src
    └── Vendor
        └── Package
            └── Subject
                └── Core
                    └── SomeComponent.php
<?php

namespace Vendor\Package\Subject\Core;

class SomeComponent
{

}
<?php

declare(strict_types=1);

require_once (__DIR__ . '/vendor/autoload.php');

use ExOrg\Autoloader\Autoloader;
use ExOrg\Autoloader\Psr0AutoloadingStrategy;

$psr0Strategy = new Psr0AutoloadingStrategy();
$psr0Strategy->registerNamespacePath('Vendor\Package', './src');

$autoloader = new Autoloader();
$autoloader->setAutoloadingStrategy($psr0Strategy);
$autoloader->register();

$component = new Vendor\Package\Subject\Core\SomeComponent();

$autoloader->unregister();

PEAR自动加载器

.
└── src
    └── Subject
        └── Core
            └── SomeComponent.php
<?php

class Subject_Core_SomeComponent
{

}
<?php

declare(strict_types=1);

require_once (__DIR__ . '/vendor/autoload.php');

use ExOrg\Autoloader\Autoloader;
use ExOrg\Autoloader\PearAutoloadingStrategy;

$pearStrategy = new PearAutoloadingStrategy();
$pearStrategy->registerPseudonamespacePath('Subject', './src');

$autoloader = new Autoloader();
$autoloader->setAutoloadingStrategy($pearStrategy);
$autoloader->register();

$component = new Subject_Core_SomeComponent();

$autoloader->unregister();

固定自动加载器

.
└── src
    └── Subject
        └── Core
            └── SomeComponent.php
<?php

namespace Subject\Core;

class SomeComponent
{

}
<?php

declare(strict_types=1);

require_once (__DIR__ . '/vendor/autoload.php');

use ExOrg\Autoloader\Autoloader;
use ExOrg\Autoloader\FixedAutoloadingStrategy;

$fixedStrategy = new FixedAutoloadingStrategy();
$fixedStrategy->registerClassPath('Subject\Core\SomeComponent', './src/Subject/Core/SomeComponent.php');

$autoloader = new Autoloader();
$autoloader->setAutoloadingStrategy($fixedStrategy);
$autoloader->register();

$component = new \Subject\Core\SomeComponent();

$autoloader->unregister();

递归自动加载器

.
└── src
    └── Subject
        └── Core
            └── SomeComponent.php
<?php

namespace Subject\Core;

class SomeComponent
{

}
<?php

declare(strict_types=1);

require_once (__DIR__ . '/vendor/autoload.php');

use ExOrg\Autoloader\Autoloader;
use ExOrg\Autoloader\RecursiveAutoloadingStrategy;

$recursiveStrategy = new RecursiveAutoloadingStrategy();
$recursiveStrategy->registerPath('./src');

$autoloader = new Autoloader();
$autoloader->setAutoloadingStrategy($recursiveStrategy);
$autoloader->register();

$component = new \Subject\Core\SomeComponent();

$autoloader->unregister();

测试

单元测试

此项目具有单元测试,已使用PHPUnit框架构建并在Linux操作系统上运行。

要运行测试,请在主Autoloader项目目录的命令行中编写以下命令

vendor/bin/phpunit tests/

或使用Composer脚本

composer test

代码风格测试

此代码遵循PSR-1PSR-12标准。

要在命令行中运行代码风格测试,请在主Autoloader项目目录中编写以下命令

vendor/bin/phpcs tests/ src/

或使用Composer脚本

composer sniff

您还可以使用Composer脚本来同时运行测试和检查代码风格

composer check

构建工具

版本控制

此项目根据SemVer版本控制标准进行版本控制。所有可用的发布版标记

贡献

请阅读CONTRIBUTING.md以获取关于行为准则和提交拉取请求过程的详细信息。

作者

许可证

此项目根据MIT许可证授权 - 有关详细信息,请参阅LICENSE.md文件。