Ej - Ledbox

Anuncio
PSR (PHP, Standard, Requeriments)
Norma de codificación de los elementos que se requieren para garantizar
un alto nivel técnico de código Php.
PSR-0 Autoloading Standard
Es una forma sencilla de cómo cargar clases automaticamente, cargando
unicamente las clases que necesitemos. Simplemente tenemos que incluir
el fichero que contenga nuestra función de carga en el lugar donde se
vayan a instanciar las clases.
A continuación mostraremos un ejemplo:
Por un lado los ficheros claseA.php, claseB.php, claseC.php que contienen
nuestras clases.
clasea.php
| claseb.php
|
clasec.php
class A{
| class B{
|
class C{
|
|
……….
…..
}
…..
| }
|
}
Por otro lado nuestro fichero de carga:
autoload.php
<?php
function my_autoloader($class) {
require_once(“ruta_de_nuestras_clases/class".strtolower($class).".php");
}
spl_autoload_register('my_autoloader');
//siendo:
//$clase : el nombre de la clase que instanciamos en el index.php
// “ruta_de_nuestra_clase/class” : la ruta de directorios para llegar a
nuestros ficheros de clases. X ej: /directorio/base/clases/class
//”strotolower($class)”: pasa a minusculas la variable $clase.
Por último en nuestro fichero index.php realizaremos un require_once de
nuestro fichero autoload.php y cuando necesitemos una clase con
instanciarla nos será suficiente, ya que autoload.php se cargará de
cargarla.
Index.php
<?php
require_once(autoload.php);
//si quiero usar por ejeplo la clase A y la clase B, solo tengo que
//instanciarlas.
$objetoA = new A();
$objetoB = new B();
PSR-1 Basic Coding Standard
a) Archivos:
a-1) etiqueta php: Siempre usar <?php ?> o <?= ?>
a-2) Codificación de caracteres: en php se usa siempre UTF-8
a-3) Efectos segundarios: Separación de la estructura (clases,
funciones…) de la lógica de negocio.
b) Espacio de nombres y nombres de clases:
b-1) Cada clase debe de estar en un fichero independiente.
b-2) El nombre de la clase debe seguir notación StudlyCaps
(minusculas, sin espacios y la primera letra de cada palabra en
mayuscula)
Ej:
class NombreDeLaClase
{
……..
}
c) Constantes de clases, métodos y propiedades:
c-1) Constantes: Siempre en mayusculas y separadas por guiones
bajos.
Ej: const FECHA_DE_NACIMIENTO = “2012-03-03”;
c-2) Métodos: los nombres de los métodos deben declararse en
notación camelCase (minusculas, sin espacios y la primera letra de
cada palabra en mayuscula menos la primera palabra).
Ej:
Public function metodoDeEjemplo()
{
….
}
PSR-2 Coding Style Guide
Este amplia y extiende el estandar PSR-1
a) General
a-1) Ficheros: todos los ficheros deben acabar con una línea en
blanco y la etiqueta “?>” se debe omitir en ficheros que contengan
solo codigo php.
a-2) Líneas: líneas de no mas de 80 caracteres, líneas en blanco
entre sentencias del código para mejorar la legibilidad y no debe
haber mas de una sentencia por línea.
a-3) Indentación: usar 4 espacios en blaco en lugar de tabulación.
a-4) palabras clave: (true, false, null) siempre en minúsculas.
b) Clases propiedades y métodos
b-1) Extensiones e implementaciones: extend y implements deben
declararse en la misma línea de la clase y las llaves de la clase en
líneas diferentes.
Ej
class NombreClase exteds ClasePadre
{
…
}
b-2) Propiedades:
- Visibilidad: debe ser declarada en todas las propiedades.
- var: no debe ser usada para declarar una propiedad.
- No mas de una propiedad por sentencia.
- No usar en los nombres de las propiedades guiones bajos para
indicar si son privados o protegidos.
Ej:
Class NombreClase
{
Public/protected/private propiedad;
}
b-3) Métodos:
- Visibilidad: siempre debe estar declarada.
- No se debe usar guión bajo para indicar si son privados o
protegidos.
- Las llaves { } en lineas distintas
- Sin espacios en blanco entre la apertura y cierre del paréntesis.
Ej:
Public function metodoDeEjemplo($a, $b)
{
……..
}
b-4) Argumentos de los métodos:
- Sin espacios en blanco antes de la coma y con espacios en
blanco después de la coma.
- Los argumentos con valor en la función se colocan al final de los
argumentos.
Ej:
Public function metodoDeEjemplo($a, $b, $c=1)
{
……..
}
b-5) Palabras abstract, final y static:
- Final y abstract antes de la declaración de la visibilidad.
- Static después de la declaración de la visibilidad
Ej:
Public Class
{
abstract public function miFuncion();
public static function miFuncionDos();
}
b-6) Llamadas a métodos y funciones:
Sin espacios en blaco: entre el nombre del método y el paréntesis
de apertura, después del paréntesis de apertura, antes del
paréntesis de cierre y en la lista de argumentos antes de la coma.
Con espacios en blanco: después de cada coma.
Ej:
$objeto->metodoEjemplo($a, $b, $c);
c) Estructuras de control:
Sin espacios en blanco: después del paréntesis de apertura y antes
del paréntesis de cierre.
Con espacios en blanco: después de la palabra clave de la
estructura de control, entre el paréntesis de cierre y la estructura de
control.
Las llaves de cierre “}” en línea diferente al código.
Ej:
If ($variable = 0) {
//código
}
Otro Ej:
for ($i = 0; $i < $n; $i++;) {
//codigo
}
PSR-3 Logger Interface
El objetivo principal es permitir a todas las librerías usar el objeto
“Psr\Log\LoggerInterface” y escribir con él de manera simple y universal.
El corazón de la especificación es una interfaz para objetos Logger. Esta
interfaz expone ocho métodos para el manejo de mensajes de diferente
gravedad y un genérico log () método que puede aceptar un nivel de
gravedad arbitraria.
Los ocho niveles de gravedad soportados por PSR-3 se basan en RFC 5424 ,
y se describen a continuación:
Emergencia - el sistema es inutilizable
 Alerta - se requiere una acción inmediata
 Críticos condiciones críticas  Error - Errores que no requieren de atención inmediata, pero deben ser
controlados
 Advertencia - acontecimientos inusuales o indeseables que no son
errores
 Note - eventos normales pero significativas
 Info - eventos interesantes
 Depuración - información detallada para propósitos de depuración
Cada uno de los métodos de registro acepta un mensaje, que debe ser una
cadena o un objeto con un __toString () método. Un argumento adicional
acepta una matriz, que puede darse a proporcionar información
contextual para el mensaje de registro.

Una explicación completa de estos métodos y parámetros se puede
encontrar en la especificación PSR-3 .
Para más información :
https://github.com/php-fig/log
http://www.sitepoint.com/logging-with-psr-3-to-improve-reusability/
PSR-4 Improved Autoloading (mejora de carga automática)
Describe una especificación para la carga automática de clases. Se puede
utilizar en adición de otra especificación de carga automática de clases
como PSR-0.
Algunas especificaciones:
- El nombre de la clase debe tener nombre de clase de
terminación.
- Los guiones no tienen un significado especial en cualquier parte
del nombre de clase completo.
Descargar