lane4core / classversion
ClassVersion enables loading classes with the same name from specific subdirectories associated with respective version labels
Installs: 3
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/lane4core/classversion
Requires
- php: >=8.1
- lane4core/contract: ^1.0
Requires (Dev)
- phpstan/phpstan: ^2.0.4
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.11.2
README
ClassVersion enables loading classes with the same name from specific subdirectories associated with respective version labels.
Description for example code
This code implements a dynamic loading system for classes, allowing different versions of a class to be loaded from corresponding subdirectories. The main functionality is provided by the ClassVersion and ClassVersionConfig classes. Here is a step-by-step explanation:
- Class Version Configuration:
- The
$classVersions
variable defines a mapping of subdirectories (subDirectory
) to available version labels (version1
,version2
).
- The
- Configuration Initialization:
- A
ClassVersionConfig
object is created and initialized with the version configuration$classVersions
.
- A
- ClassVersion Instance:
- An instance of
ClassVersion
is created, working with the previously defined configuration.
- An instance of
- Loading Classes:
ClassVersion
enables loading classes in different versions:
$classVersion(YourClass::class)
: Loads the default version of the classYourClass
.$classVersion(YourClass::class, 'version1')
: Loads versionversion1
of the classYourClass
.$classVersion(YourClass::class, 'version2')
: Loads versionversion2
of the classYourClass
.
Code Benefits
This approach allows different versions of a class to be dynamically loaded without directly referencing the implementations in the code. This is particularly useful in projects that require versioning, such as API versions or experimental implementations of classes.
Example Code
use lane4core\ClassVersion\ClassVersion;
use lane4core\ClassVersion\config\ClassVersionConfig;
$classVersions = ['subDirectory' => ['version1', 'version2']];
$classVersionConfig = new ClassVersionConfig($classVersions);
$classVersion = new ClassVersion($classVersionConfig);
$class = $classVersion(YourClass::class)
$class1 = $classVersion(YourClass::class, 'version1')
$class2 = $classVersion(YourClass::class, 'version2')
Quickstart Composer
composer require lane4core/classversion
make install
Quickstart GitHub
git clone https://github.com/lane4core/classversion.git
cd classversion
GitHub Repository Contents
- Source Files:
src
tests
- Support:
- Docker Compose
.env
pre-commit-hook.sh
Makefile
: Simply runmake
in the terminal.
- Documentation:
README.md