You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.6 KiB
116 lines
4.6 KiB
1 year ago
|
# CodeIgniter Coding Standard
|
||
|
|
||
|
[](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpunit.yml)
|
||
|
[](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-coding-standards.yml)
|
||
|
[](https://github.com/CodeIgniter/coding-standard/actions/workflows/test-phpstan.yml)
|
||
|
[](phpstan.neon.dist)
|
||
|
[](https://coveralls.io/github/CodeIgniter/coding-standard?branch=develop)
|
||
|
[](https://packagist.org/packages/codeigniter/coding-standard)
|
||
|
[](LICENSE)
|
||
|
[](https://packagist.org/packages/codeigniter/coding-standard)
|
||
|
|
||
|
This library holds the official coding standards of CodeIgniter based
|
||
|
on [PHP CS Fixer][1] and powered by [Nexus CS Config][2].
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
You can add this library as a local, per-project dependency to your project
|
||
|
using [Composer](https://getcomposer.org/):
|
||
|
|
||
|
composer require codeigniter/coding-standard
|
||
|
|
||
|
If you only need this library during development, for instance to run your project's test suite,
|
||
|
then you should add it as a development-time dependency:
|
||
|
|
||
|
composer require --dev codeigniter/coding-standard
|
||
|
|
||
|
## Setup
|
||
|
|
||
|
To start, let us create a `.php-cs-fixer.dist.php` file at the root of your project.
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
|
||
|
use CodeIgniter\CodingStandard\CodeIgniter4;
|
||
|
use Nexus\CsConfig\Factory;
|
||
|
|
||
|
return Factory::create(new CodeIgniter4())->forProjects();
|
||
|
|
||
|
```
|
||
|
|
||
|
This minimal setup will return a default instance of `PhpCsFixer\Config` containing all rules applicable
|
||
|
for the CodeIgniter organization.
|
||
|
|
||
|
Then, in your terminal, run the following command:
|
||
|
|
||
|
```console
|
||
|
$ vendor/bin/php-cs-fixer fix --verbose
|
||
|
```
|
||
|
|
||
|
## Adding License Headers
|
||
|
|
||
|
The default setup will not configure a license header in files. License headers can be especially useful
|
||
|
for library authors to assert copyright. To add license headers in your PHP files, you can simply provide
|
||
|
your name and name of library. Optionally, you can also provide your email and starting license year.
|
||
|
|
||
|
```diff
|
||
|
<?php
|
||
|
|
||
|
use CodeIgniter\CodingStandard\CodeIgniter4;
|
||
|
use Nexus\CsConfig\Factory;
|
||
|
|
||
|
-return Factory::create(new CodeIgniter4())->forProjects();
|
||
|
+return Factory::create(new CodeIgniter4())->forLibrary(
|
||
|
+ 'CodeIgniter 4 framework',
|
||
|
+ 'CodeIgniter Foundation',
|
||
|
+ 'admin@codeigniter.com',
|
||
|
+ 2021,
|
||
|
+);
|
||
|
|
||
|
```
|
||
|
|
||
|
## Providing Overriding Rules and Options
|
||
|
|
||
|
The list of enabled rules can be found in the [`CodeIgniter\CodingStandard\CodeIgniter4`][3] class. If you
|
||
|
feel the rule is not applicable to you or you want to modify it, you can do so by providing an array of
|
||
|
overriding rules to the second parameter of `Factory::create()`.
|
||
|
|
||
|
Similarly, you can further modify the `PhpCsFixer\Config` instance returned by using the available options.
|
||
|
All available options are fully supported by [Nexus CS Config][2] and abstracted by simply providing an
|
||
|
array of key-value pairs in the third parameter of `Factory::create()`.
|
||
|
|
||
|
```diff
|
||
|
<?php
|
||
|
|
||
|
use CodeIgniter\CodingStandard\CodeIgniter4;
|
||
|
use Nexus\CsConfig\Factory;
|
||
|
|
||
|
-return Factory::create(new CodeIgniter4())->forProjects();
|
||
|
+return Factory::create(new CodeIgniter4(), [], [
|
||
|
+ 'usingCache' => false,
|
||
|
+])->forProjects();
|
||
|
|
||
|
```
|
||
|
|
||
|
You can check out this library's own [`.php-cs-fixer.dist.php`][4] for inspiration on how it is done.
|
||
|
For more detailed documentation on all available options, you can check [here][2].
|
||
|
|
||
|
## Contributing
|
||
|
|
||
|
All forms of contributions are welcome!
|
||
|
|
||
|
Since the rules here will be propagated and used within the CodeIgniter organization, all proposed rules
|
||
|
and modifications to existing rules should have a proof-of-concept (POC) PR sent first to
|
||
|
the [CodeIgniter4][5] repository with possible changes to the code styles applied there. Once accepted
|
||
|
there, you can send in a PR here to apply those rules.
|
||
|
|
||
|
## License
|
||
|
|
||
|
This work is open-sourced under the MIT license.
|
||
|
|
||
|
[1]: https://github.com/FriendsOfPHP/PHP-CS-Fixer
|
||
|
[2]: https://github.com/NexusPHP/cs-config
|
||
|
[3]: src/CodeIgniter4.php
|
||
|
[4]: .php-cs-fixer.dist.php
|
||
|
[5]: https://github.com/codeigniter4/CodeIgniter4
|