Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5']
php: ['8.2', '8.3', '8.4', '8.5']

steps:
- uses: actions/checkout@v2
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/.ddev
/.php_cs.cache
/.php-cs-fixer.cache
/.phpunit.cache
/.idea
/composer.lock
/vendor
118 changes: 118 additions & 0 deletions .php-cs-fixer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
<?php
if (PHP_SAPI !== 'cli') {
die('This script supports command line usage only. Please check your command.');
}

return (new \PhpCsFixer\Config())
->setParallelConfig(\PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
->setFinder(
(new PhpCsFixer\Finder())
->ignoreVCSIgnored(true)
->in(__DIR__)
->exclude('.github')
->exclude('vendor'),
)
->setRiskyAllowed(true)
->setRules([
'@DoctrineAnnotation' => true,
// @todo: Switch to @PER-CS2x0 once php-cs-fixer's todo list is done: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/7247
'@PER-CS1x0' => true,
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'cast_spaces' => ['space' => 'none'],
// @todo: Can be dropped once we enable @PER-CS2x0
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'none'],
'declare_parentheses' => true,
'dir_constant' => true,
// @todo: Can be dropped once we enable @PER-CS2x0
'function_declaration' => [
'closure_fn_spacing' => 'none',
],
'function_to_constant' => [
'functions' => [
'get_called_class',
'get_class',
'get_class_this',
'php_sapi_name',
'phpversion',
'pi',
],
],
'type_declaration_spaces' => true,
'global_namespace_import' => [
'import_classes' => false,
'import_constants' => false,
'import_functions' => false,
],
'list_syntax' => ['syntax' => 'short'],
// @todo: Can be dropped once we enable @PER-CS2x0
'method_argument_space' => true,
'modernize_strpos' => true,
'modernize_types_casting' => true,
'native_function_casing' => true,
'native_function_invocation' => [
'include' => [],
'scope' => 'all',
'strict' => true,
],
'no_alias_functions' => true,
'no_blank_lines_after_phpdoc' => true,
'no_empty_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => true,
'no_leading_namespace_whitespace' => true,
'no_null_property_initialization' => true,
'no_short_bool_cast' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_superfluous_elseif' => true,
'no_trailing_comma_in_singleline' => true,
'no_unneeded_control_parentheses' => true,
'no_unused_imports' => true,
'no_useless_else' => true,
'no_useless_nullsafe_operator' => true,
'nullable_type_declaration' => [
'syntax' => 'question_mark',
],
'nullable_type_declaration_for_default_null_value' => true,
'ordered_class_elements' => ['order' => ['use_trait', 'case', 'constant', 'property']],
'ordered_imports' => ['imports_order' => ['class', 'function', 'const'], 'sort_algorithm' => 'alpha'],
'php_unit_construct' => ['assertions' => ['assertEquals', 'assertSame', 'assertNotEquals', 'assertNotSame']],
'php_unit_mock_short_will_return' => true,
'php_unit_test_case_static_method_calls' => [
'call_type' => 'self',
'methods' => [
'any' => 'this',
'atLeast' => 'this',
'atLeastOnce' => 'this',
'atMost' => 'this',
'exactly' => 'this',
'never' => 'this',
'onConsecutiveCalls' => 'this',
'once' => 'this',
'returnArgument' => 'this',
'returnCallback' => 'this',
'returnSelf' => 'this',
'returnValue' => 'this',
'returnValueMap' => 'this',
'throwException' => 'this',
],
],
'phpdoc_no_access' => true,
'phpdoc_no_empty_return' => true,
'phpdoc_no_package' => true,
'phpdoc_scalar' => true,
'phpdoc_trim' => true,
'phpdoc_types' => true,
'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
'protected_to_private' => true,
'return_type_declaration' => ['space_before' => 'none'],
'single_quote' => true,
'single_space_around_construct' => true,
'single_line_comment_style' => ['comment_types' => ['hash']],
// @todo: Can be dropped once we enable @PER-CS2x0
'single_line_empty_body' => true,
'trailing_comma_in_multiline' => ['elements' => ['arrays']],
'whitespace_after_comma_in_array' => ['ensure_single_space' => true],
'yoda_style' => ['equal' => false, 'identical' => false, 'less_and_greater' => false],
]);
49 changes: 0 additions & 49 deletions .php_cs.dist

This file was deleted.

31 changes: 1 addition & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,37 +42,8 @@ return array(
);
```

The '::class' constant is not available before PHP 5.5. Under a PHP before 5.5 the mapping file can look like this:

```
<?php
return array(
'Tx_About_Controller_AboutController' => 'TYPO3\\CMS\\About\\Controller\\AboutController',
'Tx_About_Domain_Model_Extension' => 'TYPO3\\CMS\\About\\Domain\\Model\\Extension',
'Tx_About_Domain_Repository_ExtensionRepository' => 'TYPO3\\CMS\\About\\Domain\\Repository\\ExtensionRepository',
'Tx_Aboutmodules_Controller_ModulesController' => 'TYPO3\\CMS\\Aboutmodules\\Controller\\ModulesController',
);
```

In your *root* `composer.json` file, you can decide whether to allow classes to be found that are requested with wrong casing.
Since PHP is case insensitive for class names, but PSR class loading standards bound file names to class names, class names de facto
become case sensitive. For legacy packages it may be useful however to allow class names to be loaded even if wrong casing is provided.
For this to work properly, you need to use the composer [optimize class loading information feature](https://getcomposer.org/doc/03-cli.md#global-options).


You can activate this feature like this:

```
"extra": {
"typo3/class-alias-loader": {
"autoload-case-sensitivity": false
}
},
```

The default value of this option is `true`.

If no alias mapping is found and case sensitivity is set to `true` then by default this package does nothing. It means no additional class loading information is dumped
If no alias mapping is found then by default this package does nothing. It means no additional class loading information is dumped
and the `vendor/autoload.php` is not changed. This enables library vendors to deliver compatibility packages which provide such aliases
for backwards compatibility, but keep the library clean (and faster) for new users.

Expand Down
7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,22 @@
"psr-4": { "TYPO3\\ClassAliasLoader\\Test\\": "tests/"}
},
"require": {
"php": ">=7.1",
"php": ">=8.2",
"composer-plugin-api": "^2.0"
},
"require-dev": {
"composer/composer": "^2.0@dev",
"mikey179/vfsstream": "~1.4.0@dev",
"phpunit/phpunit": "^8 || ^9"
"phpunit/phpunit": "^11",
"friendsofphp/php-cs-fixer": "^3.95"
},
"replace": {
"helhum/class-alias-loader": "*"
},
"extra": {
"class": "TYPO3\\ClassAliasLoader\\Plugin",
"branch-alias": {
"dev-main": "1.1.x-dev"
"dev-main": "2.0.x-dev"
}
}
}
51 changes: 23 additions & 28 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
@@ -1,29 +1,24 @@
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
beStrictAboutTestsThatDoNotTestAnything="true"
cacheResult="false"
colors="true"
convertDeprecationsToExceptions="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
failOnRisky="true"
failOnWarning="true"
forceCoversAnnotation="false"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
verbose="false"
>
<testsuites>
<testsuite name="Unit tests">
<directory>tests/Unit/</directory>
</testsuite>
</testsuites>
<php>
<ini name="error_reporting" value="E_ALL" />
</php>
<?xml version="1.0"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.5/phpunit.xsd"
beStrictAboutTestsThatDoNotTestAnything="true"
cacheResult="false"
colors="true"
failOnRisky="true"
failOnWarning="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
cacheDirectory=".phpunit.cache"
requireCoverageMetadata="false">
<testsuites>
<testsuite name="Unit tests">
<directory>tests/Unit/</directory>
</testsuite>
</testsuites>
<php>
<ini name="error_reporting" value="E_ALL"/>
</php>
</phpunit>
3 changes: 2 additions & 1 deletion res/php/alias-loader-include.tmpl.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<?php

declare(strict_types=1);

$composerAutoLoader = require dirname(__DIR__) . '/autoload.php';
$classAliasMap = require dirname(__DIR__) . '/composer/autoload_classaliasmap.php';
$classAliasLoader = new TYPO3\ClassAliasLoader\ClassAliasLoader($composerAutoLoader);
$classAliasLoader->setAliasMap($classAliasMap);
$classAliasLoader->setCaseSensitiveClassLoading('{$sensitive-loading}');
$classAliasLoader->register('{$prepend}');
TYPO3\ClassAliasLoader\ClassAliasMap::setClassAliasLoader($classAliasLoader);
Loading
Loading