Skip to content

Instantly share code, notes, and snippets.

@iZerus
Last active August 4, 2021 11:32
Show Gist options
  • Save iZerus/1c37943ebbd266ca97ec0e2220a64dc4 to your computer and use it in GitHub Desktop.
Save iZerus/1c37943ebbd266ca97ec0e2220a64dc4 to your computer and use it in GitHub Desktop.
<?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