Zoeken…
Invoering
De PSR (PHP Standards Recommendation) is een reeks aanbevelingen van de FIG (Framework Interop Group).
"Het idee achter de groep is dat projectvertegenwoordigers praten over de overeenkomsten tussen onze projecten en manieren vinden om samen te werken" - FIG FAQ
PSR's kunnen de volgende status hebben: Geaccepteerd, Beoordeling, Concept of Verouderd.
PSR-4: Autoloader
PSR-4 is een geaccepteerde aanbeveling die de standaard schetst voor het automatisch laden van klassen via bestandsnamen. Deze aanbeveling wordt aanbevolen als alternatief voor de eerdere (en nu niet meer gebruikte) PSR-0 .
De volledig gekwalificeerde klassenaam moet voldoen aan de volgende vereiste:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- Het MOET een naamruimte voor leveranciers op het hoogste niveau bevatten (bijvoorbeeld:
Alphabet
) - Het KAN een of meer subnaamruimten bevatten (bijvoorbeeld:
Google\AdWord
) - Het MOET een eindklasse-naam bevatten (bijvoorbeeld:
KeywordPlanner
)
De uiteindelijke Alphabet\Google\AdWord\KeywordPlanner
zou dus Alphabet\Google\AdWord\KeywordPlanner
. De volledig gekwalificeerde klassenaam moet ook worden vertaald in een zinvol bestandspad. Alphabet\Google\AdWord\KeywordPlanner
bevindt zich daarom in [path_to_source]/Alphabet/Google/AdWord/KeywordPlanner.php
Vanaf PHP 5.3.0 kan een aangepaste autoloader-functie worden gedefinieerd om bestanden te laden op basis van het pad en het bestandsnaampatroon dat u definieert.
# Edit your php to include something like:
spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php';});
De locatie ('klassen /') en bestandsnaamextensie ('.class.php') vervangen door waarden die van toepassing zijn op uw structuur.
Composer- pakketbeheerder ondersteunt PSR-4, wat betekent dat u, als u de standaard volgt, uw klassen in uw project automatisch kunt laden met de autoloader van Composer voor leveranciers.
# Edit the composer.json file to include
{
"autoload": {
"psr-4": {
"Alphabet\\": "[path_to_source]"
}
}
}
Regenereer het autoloader-bestand
$ composer dump-autoload
Nu kunt u in uw code het volgende doen:
<?php
require __DIR__ . '/vendor/autoload.php';
$KeywordPlanner = new Alphabet\Google\AdWord\KeywordPlanner();
PSR-1: Basic Coding Standard
PSR-1 is een geaccepteerde aanbeveling en schetst een standaard standaardaanbeveling voor hoe code moet worden geschreven.
- Het schetst naamgeving convetions voor klassen, methoden en constanten.
- Het maakt het aannemen van PSR-0 of PSR-4 aanbevelingen een vereiste.
- Het geeft aan welke PHP-tags te gebruiken:
<?php
en<?=
Maar niet<?
. - Het specificeert welke bestandscodering moet worden gebruikt (UTF8).
- Het stelt ook dat bestanden nieuwe symbolen (klassen, functies, constanten, etc.) moeten declareren en geen andere bijwerkingen moeten veroorzaken, of logica met bijwerkingen moeten uitvoeren en geen symbolen moeten definiëren, maar beide moeten doen.
PSR-8: Huggable-interface
PSR-8 is een spoof-PSR ( momenteel in Draft ) voorgesteld door Larry Garfield als een grap van April Fools op 1 april 2014.
Het ontwerp schetst hoe een interface te definiëren om een object Huggable
.
Uittreksel uit de codeschets:
<?php
namespace Psr\Hug;
/**
* Defines a huggable object.
*
* A huggable object expresses mutual affection with another huggable object.
*/
interface Huggable
{
/**
* Hugs this object.
*
* All hugs are mutual. An object that is hugged MUST in turn hug the other
* object back by calling hug() on the first parameter. All objects MUST
* implement a mechanism to prevent an infinite loop of hugging.
*
* @param Huggable $h
* The object that is hugging this object.
*/
public function hug(Huggable $h);
}