Прежде всего, спасибо, что нашли время внести вклад!
Ваш вклад увеличивает ваш Рейтинг в нашем сообществе.
Пожалуйста, прочитайте наше Руководство по архитектуре и Инструкцию по установке.
При внесении вклада в этот репозиторий, прежде чем вносить изменения, сначала обсудите изменения, которые вы хотите внести, при помощи issue, электронной почты или любым другим способом, с основной командой.
- Удостоверьтесь, что у вас есть аккаунт GitHub.
- Отправьте GitHub issue для вашей проблемы если таковой еще нет.
- Issue не нужно для незначительных изменений.
- Сделайте fork репозитория на GitHub.
- Настройка удалённого репозитория для fork
- Синхронизация fork
git fetch upstream
git checkout master
git merge upstream/master
- Слияние (merge) upstream-репозитория в ваш fork
git checkout master
git pull upstream master
- Сделать commit слияния (merge)
git push origin master
- При работе над issue, создайте новую ветку (branch) от
master
названную номером issue или другим именем. Назовите веткуissue/<issue-number>
илиissue/<custom-name>
. Например,issue/22
при работе над issue #22. - Внесите изменения.
- Следуйте Руководству по стилю.
- Избегайте платформозависимого кода.
- Добавьте тесты если ваши изменения содержат новые, тестируемые поведения.
- Сделайте тесты проходимыми (успешными).
- Создайте pull request к репозиторию.
master
- последняя, развёртываемая версия
Начните с просмотра этих issues:
- Beginner issues - issues которые требуют несколько строк кода, и один или два теста. Issues отсортированы по общему количеству комментариев.Хотя количество комментариев не является идеальным, оно является разумным показателем воздействия, которое окажет данное изменение.
- TODO issues - найдите комментарии, которые начинаются со слова
TODO
в исходном коде, с описанием проблемы, а также с рекомендациями по ее исправлению.
Вы можете помочь улучшить документацию/перевод, сделав их более понятными, последовательными или читаемыми, добавив недостающую информацию, исправив ошибки и опечатки. Пожалуйста, прочитайте как работает Интернационализация (I18N).
Все переводы находятся в исходных файлах.
Для этого внесите изменения в исходные файлы. После чего отправьте pull request для его принятия в master
ветку.
Чтобы помочь нашим CI-серверам, вы должны добавить [ci skip]
к вашему commit-сообщению для документации, чтобы пропустить сборку на этом коммите. Пожалуйста, не забудьте использовать его для коммитов, содержащих только изменения документации.
- Включает номер issue в начале первой строки (если возможно)
Например, #234 YOUR_COMMIT_NAME
- Используйте настоящее время ("Add feature", не "Added feature")
- Используйте повелительное наклонение ("Move cursor to...", не "Moves cursor to...")
- В случае изменения только текста или документации, добавьте
[ci skip]
в конец первой строки - Ограничьте первую строку в 72 символа или меньше
- Подробно опишите issues и pull requests после первой строки
Все *.md
файлы должны придерживаться Markdown-синтаксис.
PHP код ДОЛЖЕН придерживаться Yii 2 Web Framework Coding Standard Style, PHP Standards Recommendations, Clean Code PHP.
Рекомендуемые IDE:
- Atom
- Atom-Beautify
- PHP-CS-Fixer. The beautifier использует файл
.php_cs
.- Перейдите в "File > Settings > Packages > atom-beautify > Settings > PHP". Для автоматического запуска beautify для PHP-кода при сохранении файла, включите
Beautify On Save
-опцию и выберитеPHP-CS-Fixer
как Default Beautifier. - Перейдите в "File > Settings > Packages > atom-beautify > Settings > Executable > PHP-CS-Fixer". Добавьте Binary/Script Path, например,
ABSOLUTE_PATH_TO_PROJECT_DIR/vendor/bin/php-cs-fixer
.
- Перейдите в "File > Settings > Packages > atom-beautify > Settings > PHP". Для автоматического запуска beautify для PHP-кода при сохранении файла, включите
- PHP-CS-Fixer. The beautifier использует файл
- EditorConfig
- IDE-PHP
- PHP Linter
- Yii Framework 2
- Atom-Beautify
- VS Code
- PhpStorm
- PHP-CS-Fixer
- SonarLint. Для автоматической проверки стиля кода и его форматирования, включите настройки в окне коммита
Before commit > Perform SonarLint analysis
. - Yii 2 code styles для PhpStorm. Скачайте файл и импортируйте в "Settings > Editor > Code Style > PHP > Import Scheme > Intellij IDEA code style XLM".
- Eclipse
- Sublime Text
https://www.yiiframework.com/doc/api/2.0/yii-db-migration
Перед созданием файлов миграции, используйте wwwsqldesigner для создания прототипа изменений для базы данных. Например, вы можете использовать https://ondras.zarovi.cz/sql/demo/?keyword=default с любым ключевым словом и поделиться ссылкой с другими контрибьюторами.
https://www.yiiframework.com/doc/api/2.0/yii-db-migration#safeUp()-detail
- Называйте таблицы базы данных в единственном числе, чтобы перечислить любые объекты. Например,
user
, но неusers
. - Не используйте переменные типа
$tableName
и$tableOptions
. - Не используйте комментарии базы данных.
- Добавьте первичный ключ в каждую новую таблицу. Почему это важно?
Cтолбцы:
- Первичный ключ с целым числом - используйте
$this->primaryKey()->unsigned()
. - Целочисленные значения в диапазоне 0-255 - используйте
$this->tinyInteger()->unsigned()
. - Целочисленные значения в диапазоне 0-65535 - используйте
$this->smallInteger()->unsigned()
. - Целочисленные значения выше 65535 - используйте
$this->integer()->unsigned()
. - Значения datetime или timeshtamp - используйте
$this->integer()->unsigned()
. - Не указывайте длину (length) для столбцов с целочисленными значениями.
- Значения с плавающей точкой, где необходима точность, например деньги или координаты - используйте
$this->decimal($precision, $scale)->unsigned()
. Избегайте использования типа float для столбцов без явной необходимости, так как данный тип является не точным.
https://www.yiiframework.com/doc/api/2.0/yii-db-migration#safeDown()-detail
Используйте только для удаления объектов структуры базы данных (таблиц, полей, ключей, индексов). После создания новой миграции, проверьте можно ли откатить ее и применить снова.
Для апгрейда (upgrade) данных в базе данных, создайте миграцию, название которой начинается на upgrade_
. Используйте доступ к данным только через DAO (yii\db\Command), а не через модели. Эти миграции необходимы для существующих баз данных.
JavaScript код ДОЛЖЕН придерживаться JavaScript Standard Style.
Рекомендуемые IDE:
-
Предпочтительнее использовать spread-оператор (
{...anotherObj}
) вместоObject.assign()
-
export
-выражение где это возможно
// Используйте это:
export default class ClassName {
}
// А не это:
class ClassName {
}
export default ClassName
https://getcomposer.org/doc/04-schema.md
Во всех случаях, когда файл composer.json
обновлен, добавьте файлы composer.json
и composer.lock
в один и тот же коммит.
Каждый подключаемый пакет должен содержать определенную версию. Не используйте версии *
и @dev
.