Last active
August 4, 2021 11:32
-
-
Save iZerus/1c37943ebbd266ca97ec0e2220a64dc4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// PSR-1-basic-coding-standard | |
// Файлы ДОЛЖНЫ использовать в качестве открывающих тегов только <?php и <?=. | |
// Файлы ДОЛЖНЫ использовать только кодировку «UTF-8 без BOM» ("UTF-8 without BOM") для PHP-кода. | |
// В файлы СЛЕДУЕТ либо объявлять символы (классы, функции, константы и т.д.) либо вызывать | |
// побочные эффекты (например генерировать вывод, менять настройки .ini и т.д.), но НЕ СЛЕДУЕТ делать и то и другое. | |
// - Пространства имен и классы ДОЛЖНЫ следовать PSR-0. | |
// Имена классов ДОЛЖНЫ определяться в StudlyCaps. | |
// Константы классов ДОЛЖНЫ определяться со всеми символами в верхнем регистре с символами подчеркивания. | |
// Названия методов ДОЛЖНЫ определяться в camelCase. | |
// Ообочный эффект: изменение конфига PHP | |
ini_set('error_reporting', E_ALL); | |
// Ообочный эффект: подключение файла | |
include "file.php"; | |
// Ообочный эффект: выходной поток | |
echo "<html>\n"; | |
// Объявление функции | |
function foo() | |
{ | |
// Тело функции | |
} | |
// Условное объявление *не является* побочным эффектом | |
if (! function_exists('bar')) { | |
function bar() | |
{ | |
// Тело функции | |
} | |
} | |
// Пространство имён | |
namespace Vendor\Model; | |
//Класс | |
class Foo | |
{ | |
// Константы | |
const VERSION = '1.0'; | |
const DATE_APPROVED = '2012-06-01'; | |
} | |
// PSR-2-coding-style-guide | |
// - Код ДОЛЖЕН следовать PSR-1. | |
// При написании кода ДОЛЖНЫ использоваться для отступа 4 пробела, а не табы. | |
// НЕ ОБЯЗАТЕЛЬНЫ жесткие ограничения на длину строки; мягкое ограничение ОБЯЗАТЕЛЬНО | |
// должно быть равно 120 символам; строки ДОЛЖНЫ содержать 80 или меньше символов. | |
// После объявления пространства_имен ДОЛЖНА быть одна пустая строка, также после | |
// объявления блока use ДОЛЖНА быть одна пустая строка. | |
// Открывающая фигурная скобка при описании классов ОБЯЗАТЕЛЬНО должна находиться на | |
// следующей строке, также закрывающая фигурная скобка ДОЛЖНА находиться после тела класса. | |
// Открывающая фигурная скобка при описании методов ОБЯЗАТЕЛЬНО должна находиться на следующей | |
// строке, также закрывающая фигурная скобка ДОЛЖНА находиться после тела метода. | |
// Видимость ДОЛЖНА быть объявлена на всех свойствах и методах; abstract и final ОБЯЗАТЕЛЬНО должно | |
// быть объявлено перед видимостью; static ОБЯЗАТЕЛЬНО должно быть объявлено после видимости. | |
// Ключевые слова управляющих структур ОБЯЗАТЕЛЬНО должны иметь один пробел после себя; методы | |
// и вызовы функций НЕ ДОЛЖНЫ. | |
// Открывающиеся фигурные скобки для управляющих структур ОБЯЗАТЕЛЬНО должны находиться на той же самой | |
// линии, а закрывающиеся фигурные скобки ОБЯЗАТЕЛЬНО должно находиться на следующей за телом линии. | |
// Открывающая круглая скобка управляющих структур ОБЯЗАТЕЛЬНО НЕ должна иметь пробела после неё, а | |
// закрывающая круглая скобка управляющих структур ОБЯЗАТЕЛЬНО НЕ должна иметь пробела до нее. | |
namespace Vendor\Package; | |
use FooInterface; | |
use BarClass as Bar; | |
use OtherVendor\OtherPackage\BazClass; | |
class Foo extends Bar implements FooInterface | |
{ | |
public function sampleFunction($a, $b = null) | |
{ | |
if ($a === $b) { | |
bar(); | |
} elseif ($a > $b) { | |
$foo->bar($arg1); | |
} else { | |
BazClass::bar($arg2, $arg3); | |
} | |
} | |
final public static function bar() | |
{ | |
// тело метода | |
} | |
} | |
class ClassName extends ParentClass implements \ArrayAccess, \Countable | |
{ | |
// константы, свойства, методы | |
} | |
class ClassName extends ParentClass implements | |
\ArrayAccess, | |
\Countable, | |
\Serializable | |
{ | |
// константы, свойства, методы | |
} | |
class ClassName | |
{ | |
public $foo = null; | |
} | |
class ClassName | |
{ | |
public function fooBarBaz($arg1, &$arg2, $arg3 = []) | |
{ | |
// тело метода | |
} | |
} | |
class ClassName | |
{ | |
public function aVeryLongMethodName( | |
ClassTypeHint $arg1, | |
&$arg2, | |
array $arg3 = [] | |
) { | |
// тело метода | |
} | |
} | |
abstract class ClassName | |
{ | |
protected static $foo; | |
abstract protected function zim(); | |
final public static function bar() | |
{ | |
// тело метода | |
} | |
} | |
bar(); | |
$foo->bar($arg1); | |
Foo::bar($arg2, $arg3); | |
$foo->bar( | |
$longArgument, | |
$longerArgument, | |
$muchLongerArgument | |
); | |
if ($expr1) { | |
// тело if | |
} elseif ($expr2) { | |
// тело elseif | |
} else { | |
// тело else; | |
} | |
switch ($expr) { | |
case 0: | |
echo 'First case, with a break'; | |
break; | |
case 1: | |
echo 'Second case, which falls through'; | |
// no break | |
case 2: | |
case 3: | |
case 4: | |
echo 'Third case, return instead of break'; | |
return; | |
default: | |
echo 'Default case'; | |
break; | |
} | |
while ($expr) { | |
// тело структуры | |
} | |
do { | |
// тело структуры; | |
} while ($expr); | |
for ($i = 0; $i < 10; $i++) { | |
// тело for. | |
} | |
foreach ($iterable as $key => $value) { | |
// тело foreach | |
} | |
try { | |
// тело try | |
} catch (FirstExceptionType $e) { | |
// тело catch | |
} catch (OtherExceptionType $e) { | |
// тело catch | |
} | |
$closureWithArgs = function ($arg1, $arg2) { | |
// тело | |
}; | |
$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) { | |
// тело | |
}; | |
$longArgs_noVars = function ( | |
$longArgument, | |
$longerArgument, | |
$muchLongerArgument | |
) { | |
// тело | |
}; | |
$noArgs_longVars = function () use ( | |
$longVar1, | |
$longerVar2, | |
$muchLongerVar3 | |
) { | |
// тело | |
}; | |
$longArgs_longVars = function ( | |
$longArgument, | |
$longerArgument, | |
$muchLongerArgument | |
) use ( | |
$longVar1, | |
$longerVar2, | |
$muchLongerVar3 | |
) { | |
// тело | |
}; | |
$longArgs_shortVars = function ( | |
$longArgument, | |
$longerArgument, | |
$muchLongerArgument | |
) use ($var1) { | |
// тело | |
}; | |
$shortArgs_longVars = function ($arg) use ( | |
$longVar1, | |
$longerVar2, | |
$muchLongerVar3 | |
) { | |
// тело | |
}; | |
$foo->bar( | |
$arg1, | |
function ($arg2) use ($var1) { | |
// тело | |
}, | |
$arg3 | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment