|
|
|
Yii2 code standard
|
|
|
|
==================
|
|
|
|
|
|
|
|
This code standard is used for all the Yii2 core classes and can be applied to
|
|
|
|
your application in order to achieve consistency among your team. Also it will
|
|
|
|
help in case you want to opensource code.
|
|
|
|
|
|
|
|
|
|
|
|
PHP file formatting
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
### General
|
|
|
|
|
|
|
|
- Do not use `?>` for files containing PHP code only.
|
|
|
|
- Files should be encoded in UTF-8.
|
|
|
|
|
|
|
|
### Indentation
|
|
|
|
|
|
|
|
All major PHP frameworks and libraries are using spaces. Common number is four:
|
|
|
|
|
|
|
|
- Symfony 2: four spaces
|
|
|
|
- Zend Framework 1: four spaces
|
|
|
|
- Zend Framework 2: four spaces
|
|
|
|
- Pear: four spaces
|
|
|
|
|
|
|
|
|
|
|
|
### Maximum Line Length
|
|
|
|
|
|
|
|
We're not strictly limiting maximum line length but sticking to 80 characters
|
|
|
|
where possible.
|
|
|
|
|
|
|
|
### Line Termination
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Brackets
|
|
|
|
|
|
|
|
It's better to be consistent with brackets not to remember where should we use
|
|
|
|
newline and where not:
|
|
|
|
|
|
|
|
~~~
|
|
|
|
class MyClass
|
|
|
|
{
|
|
|
|
public function myClassMethod()
|
|
|
|
{
|
|
|
|
if($x) {
|
|
|
|
// do it
|
|
|
|
} else {
|
|
|
|
// some code
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
~~~
|
|
|
|
|
|
|
|
Use brackets even for one line `if`s.
|
|
|
|
|
|
|
|
> I chose to use the style as shown in Component.php because I want to make the
|
|
|
|
> curly brackets consistent with array brackets regarding newlines. Similar coding
|
|
|
|
> style is also used in Symfony 2.
|
|
|
|
|
|
|
|
### Use type hinting like
|
|
|
|
|
|
|
|
~~~
|
|
|
|
public function __construct(CDbConnection $connection)
|
|
|
|
{
|
|
|
|
$this->connection = $connection;
|
|
|
|
}
|
|
|
|
~~~
|
|
|
|
|
|
|
|
instead of
|
|
|
|
|
|
|
|
~~~
|
|
|
|
public function __construct($connection)
|
|
|
|
{
|
|
|
|
$this->connection = $connection;
|
|
|
|
}
|
|
|
|
~~~
|
|
|
|
|
|
|
|
### Other library and framework standards
|
|
|
|
|
|
|
|
It's good to be consistent with other frameworks and libraries whose components
|
|
|
|
will be possibly used with Yii2. That's why when there are no objective reasons
|
|
|
|
to use different style we should use one that's common among most of the popular
|
|
|
|
libraries and frameworks.
|
|
|
|
|
|
|
|
That's not only about PHP but about JavaScript as well. Since we're using jQuery
|
|
|
|
a lot it's better to be consistent with its style as well.
|
|
|
|
|
|
|
|
- [Symfony 2](http://symfony.com/doc/current/contributing/code/standards.html)
|
|
|
|
- [Zend Framework 1](http://framework.zend.com/manual/en/coding-standard.coding-style.html)
|
|
|
|
- [Zend Framework 2](http://framework.zend.com/wiki/display/ZFDEV2/Coding+Standards)
|
|
|
|
- [Pear](http://pear.php.net/manual/en/standards.php)
|
|
|
|
- [jQuery](http://docs.jquery.com/JQuery_Core_Style_Guidelines)
|