https://github.com/manticoresoftware/php-code-standard
PHP code standard used in some Manticore projects
https://github.com/manticoresoftware/php-code-standard
Last synced: 9 months ago
JSON representation
PHP code standard used in some Manticore projects
- Host: GitHub
- URL: https://github.com/manticoresoftware/php-code-standard
- Owner: manticoresoftware
- Created: 2022-10-11T05:57:44.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-08T08:09:42.000Z (about 3 years ago)
- Last Synced: 2025-07-06T03:49:17.302Z (10 months ago)
- Language: Shell
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# php-code-standard
Rules:
* We use tab `\t` for indentation
* No closing tag (`?>`) at the end of the file
* Each file has an empty new line at the end
* Bracket `{` should follow the same line of definition
* Bracket `[` should follow the same line of definition
* Multiline array declaration should contain`,` at the end of the last line
* Declaration of all functions should follow `underscore_style`
* Declaration of all method names of classes should follow `camelCaseStyle`
* **PHPStan** should run with the strictest level possible – `--level=9`
* No blank lines with spaces
* No spaces before or after function arguments (after `(` or before `)`)
* Strict equals only (for example, === or !==)
* We must use `'` over `"` all the time when there is no variable inside
* Always use the `"` without concatenation operator when we need to interpolate variables
* Each operator must be surrounded by spaces (for example, `$var = 'val'`)
* The usage of the `list` function is forbidden; we should use pattern matching instead
* The usage of `create_function` is prohibited
* The usage of `print` is prohibited; we should use `echo` instead
* There is only one single space before and after an operator
* Line length should not exceed 120 symbols
* We should not use space after cast, for example, `(int)$var`
* We should not use space after not, for example, `!$foo`
* The maximum cyclomatic complexity is 30
* The maximum cognitive complexity is 14
* We should use an early return approach to reduce the nesting
* No magic method of direct calls at all
* No unused arguments in the function signature
* No dead code import with a use statement
* No dead catches in try blocks
* No unused variables are allowed
* No unused methods are allowed
* You should not use type in variable or any property name that you define
* `@` is forbidden to use in front of any function calls
* Use type casting instead of calling functions `strval` or `intval`
* Prefer the short ternary operator `?:` over the old one
* There should be no nested ternary operators on a single statement, only one level of nesting is allowed
* All variables should be named by using `camelCase` startingg with a non-capitalized letter
* All variables should be named in declarative format and without type prefix/suffix
* Repeated function calls in a cycle when unnecessary is prohibited
* Variable that contains flag/boolean should start with `is` or `has` a prefix to be more readable and understandable
## How to install git hooks
You should download and install [pre-commit](https://pre-commit.com/) first. Once it's done you can go to the project dir where you want to activate git hooks and run the command:
```bash
pre-commit install
```
Please, remember that you should do it all the time once something updates in code style and it was deployed to the project.
## How to update the project's code style
There are two scripts: `bin/install` and `bin/install-all`. The second one uses calls to the first one by following the projects defined in `config/repo.yaml` config with all supported repositories.
You should simply run one of them after changes are made to the linter and style to update it via creating the GitHub pull request.