PSR-1 – estándar básico de codificación en PHP 7

PSR-1 es el estándar básico de codificación. Describe las reglas que nuestro código debe seguir, como lo ven los miembros de PHP-FIG. El estándar en sí es bastante corto.

Los archivos DEBEN usar solo etiquetas <?php y <?. Hubo un tiempo en que PHP admitía varias etiquetas diferentes <?php ?>,<? ?>, <?= ?> , <% %>, <%= %>, <script language=»php»></script>).
El uso de algunos depende de las directivas de configuración short_open_tag(<??>) Y asp_tags (<%%>, <% =%>). La versión PHP 7 eliminó las etiquetas ASP (<%, <%=) y el script etiqueta (<script language=»php»>) por completo. Ahora se recomienda el uso de solo etiquetas <?php ?> y <? ?> para maximizar la compatibilidad.

Los archivos DEBEN usar solo UTF-8 sin BOM para el código PHP. La marca de orden de bytes (BOM) es un carácter Unicode, U+FEFF BYTE ORDER MARK (BOM), que aparece al comienzo de un documento. Cuando se usa correctamente, BOM es invisible. Los navegadores HTML5 son necesarios para que reconocer UTF-8 BOM y la use para detectar la codificación de la página. PHP, por otro lado, puede experimentar problemas con BOM. Posicionado al comienzo del archivo, la lista de materiales choca con Encabezados de PHP al hacer que la página comience a salir antes de que se interprete el comando de encabezado.
Los archivos DEBEN declarar símbolos (clases, funciones, constantes, etc.) o causar efectos secundarios (por ejemplo, generar resultados, cambiar la configuración de .ini, etc.) pero NO DEBEN hacer ambas cosas. A menudo, la simplicidad de PHP se convierte en su inconveniente. El lenguaje es bastante sencillo cuando se trata de su uso. Podemos comenzar fácilmente desde un archivo en blanco y codificar una aplicación completa en él.
Esto implica tener docenas de diferentes clases, funciones, constantes, variables, includes, requires y otras directivas, todas apiladas una al lado de la otra. Si bien esto puede ser útil para una creación rápida de prototipos, de ninguna manera es un enfoque a tomar al construir nuestras aplicaciones.
Las siguientes líneas de código demuestran un ejemplo para evitar:

<? php
// efecto secundario: cambiar la configuración ini
ini_set('error_reporting', E_ALL);
// efecto secundario: carga un archivo
include 'authenticate.php';
// efecto secundario: genera salida
echo "<h1>Hello</h1>";
// declaración
function log($msg)
{
// body
}

Las siguientes líneas de código demuestran un ejemplo a seguir:

<? php
// declaración
function log()
{
// cuerpo
}
// la declaración condicional es * no * un efecto secundario
if (! function_exists('hello')) {
function hello($msg)
{
// cuerpo
}
}

Los espacios de nombres y las clases DEBEN seguir un PSR de carga automática: [PSR-0, PSR-4]. La carga automática juega un papel importante en PHP. El concepto reduce el uso de construcciones requeridas al incorporar nuestras clases y funciones automáticamente de varios archivos. Por defecto, el lenguaje en sí proporciona las funciones __autoload() y spl_autoload_register() para ayudar con eso.
El grupo PHP-FIG produjo dos estándares de carga automática. El estándar PSR-0 fue el primer PSR en salir, y pronto se adoptó ampliamente en muchos marcos PHP. A partir de octubre de 2014, el PSR-0 ha sido marcado como obsoleto, dejando al PSR-4 como una alternativa. Por el momento, es suficiente decir que el código escrito para PHP 5.3 y posteriores debe usar espacios de nombres formales.
Las siguientes líneas de código demuestran un ejemplo para evitar:

<? php
class Foggyline_User_Model
{
// cuerpo
}

Las siguientes líneas de código demuestran un ejemplo a seguir:

<?php
namespace Foggyline\Model;
class User
{
// cuerpo
}

Los nombres de clase DEBEN declararse en StudlyCaps. Los nombres de clase, entre otras cosas, a veces se componen de varias palabras. Imagine, por ejemplo, la clase a cargo del análisis XML. Razonablemente, podríamos llamarlo Xml_Parser, XmlParser, XML_Parser, XMLParser, o alguna combinación similar. Existen muchas reglas diferentes para juntar varias palabras que contribuyen a una mejor legibilidad del código, como el caso de camello, el caso de kebab, el caso de la serpiente, etc. Este estándar propone el uso de StudlyCaps, donde las mayúsculas de las letras varían arbitrariamente.
Las siguientes líneas de código demuestran un ejemplo para evitar:

<?php
class xmlParser
{
// cuerpo
}
class XML_Parser
{
// cuerpo
}

Las siguientes líneas de código demuestran un ejemplo a seguir:

<?php
class XmlParser
{
// cuerpo
}
class XMLParser
{
// cuerpo
}

Las constantes de clase DEBEN declararse en mayúsculas con separadores de subrayado. El sistema PHP tiene dos tipos de constantes, las que viven fuera de la clase y se definen utilizando la construcción de definición, y las otras que viven dentro de la clase. Dado que las constantes representan variables inmutables, se supone que su nombre se destaca. Este estándar establece claramente que cualquier nombre constante de clase debe estar totalmente en mayúscula. Sin embargo, evita cualquier recomendación con respecto a los nombres de las propiedades. Somos libres de usar cualquiera de las siguientes combinaciones ($StudlyCaps, $camelCase o $under_score) siempre que seamos coherentes.
Las siguientes líneas de código demuestran un ejemplo para evitar:

<?php
class XmlParser
{
public const APPVERSION = 1.2;
private const app_package = 'net.foggyline.xml.parser';
protected const appLicence = 'OSL';
}

Las siguientes líneas de código demuestran un ejemplo a seguir:

<?php
class XmlParser
{
public const APP_VERSION = 1.2;
private const APP_PACKAGE = 'net.foggyline.xml.parser';
protected const APP_LICENCE = 'OSL';
}

Los nombres de los métodos DEBEN declararse en camelCase. Las funciones encerradas dentro de una clase se llaman métodos. El patrón de nomenclatura aquí difiere de StudlyCaps mencionado anteriormente, ya que usa camelCase, que es menos arbitrario. Más específicamente, se usa camelCase en minúsculas,
lo que implica nombres de métodos que comienzan con letras minúsculas.
Las siguientes líneas de código demuestran un ejemplo para evitar:

<?php
class User
{
function say_hello($name) { /* … / }
function Pay($salary) { // }
function RegisterBankAccount($account) { / … */ }
}

Las siguientes líneas de código demuestran un ejemplo a seguir:

<?php
class User
{
function sayHello($name) { /* … / }
function pay($salary) { // }
function registerBankAccount($account) { / … */ }
}

Comparte