Recherche…


Introduction

Le PSR (PHP Standards Recommendation) est une série de recommandations formulées par le FIG (Framework Interop Group).

"L'idée du groupe est que les représentants de projets parlent des points communs entre nos projets et trouvent des moyens de travailler ensemble" - FAQ sur la FIG

Les PSR peuvent être dans les états suivants: Accepté, Révision, Brouillon ou Obsolète.

PSR-4: Chargeur automatique

PSR-4 est une recommandation acceptée qui décrit la norme pour les classes de chargement automatique via les noms de fichiers. Cette recommandation est recommandée comme alternative au PSR-0 antérieur (et désormais obsolète).

Le nom de classe complet doit correspondre à l'exigence suivante:

 \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
  • Il DOIT contenir un espace de noms de fournisseurs de premier niveau (par exemple: Alphabet )
  • Il PEUT contenir un ou plusieurs sous-espaces de noms (Ex: Google\AdWord )
  • Il DOIT contenir un nom de classe de fin ( KeywordPlanner : KeywordPlanner )

Ainsi, le nom de classe final serait Alphabet\Google\AdWord\KeywordPlanner . Le nom de classe complet doit également se traduire par un chemin de fichier significatif. Alphabet\Google\AdWord\KeywordPlanner conséquent, Alphabet\Google\AdWord\KeywordPlanner se trouve dans [path_to_source]/Alphabet/Google/AdWord/KeywordPlanner.php

À partir de PHP 5.3.0, une fonction d'autoloader personnalisée peut être définie pour charger des fichiers en fonction du chemin d'accès et du nom de fichier que vous définissez.

# Edit your php to include something like:
spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php';});

Remplacement de l'emplacement ('classes /') et de l'extension de nom de fichier ('.class.php') par des valeurs qui s'appliquent à votre structure.

Le gestionnaire de paquets Composer prend en charge PSR-4, ce qui signifie que si vous suivez la norme, vous pouvez charger automatiquement vos classes dans votre projet à l'aide de l'autoloader de Composer.

# Edit the composer.json file to include
{
    "autoload": {
        "psr-4": {
            "Alphabet\\": "[path_to_source]"
        }
    }
}

Régénérez le fichier d'autoloader

$ composer dump-autoload

Maintenant, dans votre code, vous pouvez effectuer les opérations suivantes:

<?php

require __DIR__ . '/vendor/autoload.php';
$KeywordPlanner = new Alphabet\Google\AdWord\KeywordPlanner();

PSR-1: Norme de codage de base

PSR-1 est une recommandation acceptée et présente une recommandation standard de base sur la manière dont le code doit être écrit.

  • Il décrit les convections de noms pour les classes, les méthodes et les constantes.
  • Cela fait de l'adoption des recommandations PSR-0 ou PSR-4 une exigence.
  • Il indique quelles balises PHP utiliser: <?php et <?= Mais pas <? .
  • Il spécifie quel codage de fichier utiliser (UTF8).
  • Il indique également que les fichiers doivent soit déclarer de nouveaux symboles (classes, fonctions, constantes, etc.) et ne provoquer aucun autre effet secondaire, soit exécuter une logique avec des effets secondaires et ne pas définir de symboles, mais faire les deux.

PSR-8: Interface Huggable

Le PSR-8 est un PSR parodique ( actuellement en version préliminaire ) proposé par Larry Garfield en tant que blague sur les poissons d'avril le 1er avril 2014.

Le brouillon explique comment définir une interface pour rendre un objet Huggable .

À partir du contour du code:

<?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);
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow