exorg / autoloader
可扩展的通用自动加载器。
2.0.0
2024-05-18 16:34 UTC
Requires
- php: 8.1 - 8.3
Requires (Dev)
- phpunit/phpunit: ^10.4
- squizlabs/php_codesniffer: ^3.7
This package is not auto-updated.
Last update: 2024-09-21 18:13:16 UTC
README
可扩展的通用自动加载器。
入门
先决条件
说明假设使用Linux操作系统或其他操作系统的兼容工具。
安装
需要php8.*-cli, Git和Composer
将Autoloader安装到项目源代码中的推荐方法是将其作为代码依赖项通过Composer处理。需要Git从版本控制存储库获取包。
安装Composer需要php8.*-cli。
Autoloader安装
通过运行以下命令在您的composer.json文件中添加适当的条目
composer require exorg/autoloader
如果处于项目设置阶段且尚未安装任何依赖项,则运行
composer install
如果之前已安装其他依赖项,则运行
composer update
使用方法
在可执行文件中自动加载所需的所有文件的最简单方法是附加Composer(在运行composer install
或composer 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
代码风格测试
要在命令行中运行代码风格测试,请在主Autoloader项目目录中编写以下命令
vendor/bin/phpcs tests/ src/
或使用Composer脚本
composer sniff
您还可以使用Composer脚本来同时运行测试和检查代码风格
composer check
构建工具
版本控制
此项目根据SemVer版本控制标准进行版本控制。所有可用的发布版都标记。
贡献
请阅读CONTRIBUTING.md以获取关于行为准则和提交拉取请求过程的详细信息。
作者
- Katarzyna Krasińska - katheroine, ExOrg
许可证
此项目根据MIT许可证授权 - 有关详细信息,请参阅LICENSE.md文件。