Estándares PSR para escribir código en PHP

Aprende a escribir código en PHP que cumpla los estándares PSR

Image for post
Image for post

☝️ PSR-0. Autoloading Standard.

\<VendorName>\(<Namespace>\)*<Class Name>
\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php

☝️ PSR-1. Basic Coding Standard.

Image for post
Image for post
PSR-2 y PSR-12: la guía de estilo para código PHP

☝️ PSR-2 y PSR-12. Coding Style Guide.

Archivos

Líneas

Tabulado

Palabras clave de PHP

Declare, use y namespace

<?phpdeclare(strict_types=1);namespace Acme;use \Vendor\Foo\{ClassA as A, Class B};
use \Vendor\Bar;
use function Vendor\Package\{functionA, functionB, functionC};use const Another\Vendor\CONSTANT_D;class MyClass
{
}

Clases

Extends e Implements

class MyClass extends ParentClass implements MyInterface
{
// constants, properties, methods
}
class MyClass extends ParentClass implements 
MyFirstInterface,
MySecondInterface
{
}

Traits

class MyClass
{
use MyTrait;
}

Propiedades de clase

Métodos y funciones

public function fooBarBaz($arg1, &$arg2, $arg3 = [])
{
// method body
}
public function aLongMethod(
int $arg1,
string $arg2,
array $arg3 = []
) {
//method body
}
class ReturnTypeVariations
{
public function functionName(int $arg1, $arg2): string
{
return 'foo';
}

public function anotherFunction(
string $foo,
string $bar,
int $baz
): string {
return 'foo';
}
}

Calificadores abstract, final y static.

abstract class MyClass
{
protected static $foo;
abstract protected function bar();
final public static function zeta()
{
}
}

Llamadas a funciones y métodos

<?php$foo->bar(
$first,
$second,
$third
);
somefunction($foo, $bar, [
// ...
], $baz);

Estructuras de control de flujo

// Ejemplosif ($expr1) {
// if body
} elseif ($expr2) {
// elseif body
} else {
// else body;
}
if (
$expr1
&& $expr2
) {
// if body
} elseif (
$expr3
&& $expr4
) {
// elseif body
}
// Ejemploswitch ($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;
}
Image for post
Image for post

☝️ PSR-3. Logger Interface.

☝️ PSR-4. Improved Autoloading.

Image for post
Image for post
PSR-4
Image for post
Image for post
PSR-6 y PSR-16. Interfaces para librerías que implementen cachés

☝️ PSR-6 y PSR-16. Caching interfaces

☝️ PSR-11. Container Interface

Image for post
Image for post
PSR-14. Event Dispatcher

☝️ PSR-14. Event Dispatcher

Conclusiones

¿Quieres recibir más artículos como este?

Entre paseo y paseo con Simba desarrollo en Symfony y React

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store