php 代码风格дляPHP-классов
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 代码风格дляPHP-классов相关的知识,希望对你有一定的参考价值。
<?php
namespace App\Service\SomeService;
// [CODE STYLE COMMENT] Обязательно отступ между namespace и use statements, use statements без пробелов, регулярно удаляем найденные не используемые use statements.
use App\Service\Helpers\StringHelper;
use Doctrine\ORM\EntityManagerInterface;
/**
* [CODE STYLE COMMENT] По необходимости добавляем описание классов.
* Делает то-то.
*/
class SomeService
{
// [CODE STYLE COMMENT] Сначала идут константы.
const SOME_CONST = 'boolean';
// [CODE STYLE COMMENT] Затем поля без промежутков в виде пустых строк, в порядке: public protected private.
private $stringHelper;
private $entityManager;
// [CODE STYLE COMMENT] Допустимо, а иногда даже желательно, указывать тип переменной.
/** @var FileSystemHelper */
private $fileSystemHelper;
// [CODE STYLE COMMENT] Затем конструктор
public function __construct(
StringHelper $stringHelper,
EntityManagerInterface $entityManager
)
{
$this->stringHelper = $stringHelper;
$this->entityManager = $entityManager;
}
// [CODE STYLE COMMENT] Затем PUBLIC методы. Максимально где это можно указываем PHP-doc и входных и выходного параметра.
/**
* Делает то-то.
* @param string $someString - То-то.
* @return string - Сё-то.
*/
public function someMethod(string $someString) : string
{
return 'example';
}
// [CODE STYLE COMMENT] Если название метода + параметры не помещаются на одной строке до раграничителя в IDE,
// [CODE STYLE COMMENT] то переносим каждый параметр на каждую строку.
public function someMethodWithVeryLongNameExampleAzazaOlolo(
string $table,
array $fields,
array $arraysWithValues,
array $fieldTypes = []
) : string
{
// [CODE STYLE COMMENT] То же самое с методами, но не обязательно для каждого параметра отдельную строку,
// [CODE STYLE COMMENT] главное - читаемость, можно так:
return $this->generateMultipleInsertQueryByTemplate(
'INSERT IGNORE INTO {table} {fields} VALUES {values};',
$table, $fields, $arraysWithValues, $fieldTypes
);
}
// [CODE STYLE COMMENT] Затем PROTECTED методы.
// [CODE STYLE COMMENT] Затем PRIVATE методы.
private function function functionWithCode() : void
{
// [CODE STYLE COMMENT] Делаем функции минимального размера, чтобы она делала ровно то, как была названа.
// [CODE STYLE COMMENT] Код пишем слитно, не нужно отделять пустыми строками, но разрешаются комменты,
// [CODE STYLE COMMENT] визуально отделяющие логические блоки кода друг от друга. Но лучше разбить на отдельные функции.
for ($i = 0; $i < 10; $i++) {
if ($a != $b) {
break;
}
}
// [CODE STYLE COMMENT] Перед использованием переменной впервые - явно объявляем её с указанием default value.
// [CODE STYLE COMMENT] Допустимо змеевидная инициализация, но только для логически схожих параметров.
$varA = $varB = $varC = null;
$total = 0;
foreach ($arrayOfArrays as $key => $array) {
foreach ($array as $value) {
$total += $value;
}
}
$b = $a + 5;
// [CODE STYLE COMMENT] Желательно не допускать сложных вложенных условий, но ради примера приведу.
if ($b > 10) {
// [CODE STYLE COMMENT] Порядок аргументов в if: сначала что сравнивается, затем с чем сравнивается, но не наоборот: ('some' != $code).
if ($code != 'some') {
return true;
}
} else if (true != false) {
// ...
} else {
// ...
}
}
// [CODE STYLE COMMENT] Затем ABSTRACT методы (тоже в порядке abstract public, abstract protected, abstract private).
}
// [CODE STYLE COMMENT] Обязательно последняя строка в файле - пустая (то-есть файл не должен заканчиваться на "}").
以上是关于php 代码风格дляPHP-классов的主要内容,如果未能解决你的问题,请参考以下文章
php Двациклавнутри1гослайдераforeachinforобверткадлядвухцикловслайдыдлядвухциклов
php ACF的Парсингивыводполяссылки
php Вебсерверсклоненияпопадежамсловрусскихслов
php Создадимполедляуказаниясколькозаписейвыводитьврубрикахпроизвольноготипазаписи