Classloader est une bibliothèque PHP pour les classes de mise à jour. La classe de classement signifie que les classes sont chargées uniquement lorsqu'ils sont réellement nécessaires au lieu d'avoir à inclure chaque fichier de classe à chaque exécution. Cela réduit la page de chargement des frais généraux, en particulier sur les sites Web plus grands, car seuls certains fichiers de classe doivent être chargés. Habituellement, les classes sont également chargées dynamiquement à partir de fichiers avec des noms de fichiers en fonction de l'espace de noms et du nom de classe. Cela facilite également la gestion d'un grand nombre de fichiers de classe.
Cette bibliothèque prend en charge deux des normes actuelles pour les classes de mise à jour, à savoir les PSR-0 et PSR-4. L'idée de base derrière ces normes est que les fichiers de classe résident dans des répertoires en fonction de leur espace de noms et dans des fichiers nommés d'après le cours. La principale différence entre ces deux normes est que le PSR-4 ne nécessite pas que l'ensemble de l'espace de noms soit présent dans la hiérarchie du répertoire.
Cependant, comme le fonctionnement de la recherche des fichiers de classe réel a tendance à être relativement coûteux, cette bibliothèque fournit également des mécanismes de mise en cache de base qui permettent de mettre en cache les emplacements de fichiers de classe dans un fichier PHP. Avec la mise en cache, la différence de performances entre la mise en scène et le chargement des fichiers devient manuellement négligeable.
La documentation de l'API, qui peut être générée à l'aide d'apigène, peut être lue en ligne à: http://kit.riimu.net/api/classloader/
La façon la plus simple d'installer cette bibliothèque est d'utiliser le compositeur pour gérer vos dépendances. Pour installer cette bibliothèque via Composer, suivez simplement ces deux étapes:
Acquérir le composer.phar en exécutant l'installation de ligne de commande Composer dans la racine de votre projet.
Une fois que vous avez exécuté le script d'installation, vous devriez avoir le fichier composer.phar dans votre racine de projet et vous pouvez exécuter la commande suivante:
php composer.phar require "riimu/kit-classloader:^4.4"
Après avoir installé cette bibliothèque via Composer, vous pouvez charger la bibliothèque en incluant le fichier vendor/autoload.php généré par Composer pendant l'installation.
Si vous connaissez déjà comment utiliser Composer, vous pouvez également ajouter la bibliothèque en tant que dépendance en ajoutant le fichier composer.json suivant à votre projet et en exécutant la commande composer install :
{
"require" : {
"riimu/kit-classloader" : " ^4.4 "
}
} Si vous ne souhaitez pas utiliser Composer pour charger la bibliothèque, vous pouvez également télécharger la bibliothèque manuellement en téléchargeant la dernière version et en extraction du dossier src sur votre projet. Vous pouvez ensuite inclure le fichier src/autoload.php fourni pour charger les classes de bibliothèque.
Le ClassLoader prend en charge la mise en œuvre automatique tel que défini par les normes PSR-0 et PSR-4 via respectivement les méthodes addBasePath() et addPrefixPath() . Vous n'avez pas besoin de comprendre ces normes pour utiliser cette bibliothèque, utilisez simplement la méthode qui vous convient le mieux.
La classe PSR-0 automatique définit que les fichiers de classe doivent être placés dans une arborescence d'annuaire qui reflète leur espace de noms. Par exemple, la classe 'foo bar baz' pourrait être située dans un fichier '/path/to/classes/foo/bar/baz.php'. Cette méthode est généralement le moyen le plus simple de placer vos fichiers de classe.
À l'aide de la méthode addBasePath() , vous pouvez définir les répertoires de base où chercher des classes. Pour charger la classe mentionnée ci-dessus, vous pouvez utiliser le code suivant:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Si un répertoire spécifique s'applique uniquement à un espace de noms spécifique, vous pouvez également utiliser le deuxième paramètre pour définir l'espace de noms. Cependant, le répertoire doit encore pointer vers le répertoire de base de l'espace de noms. Par exemple:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addBasePath ( ' /path/to/classes/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz ();Notez que PSR-0 indique également que les soulignements dans le nom de classe sont traités comme des séparateurs d'espace de noms (mais pas de soulignement dans les espaces de noms). Donc, même si votre classe était appelée «foo bar_baz», les deux exemples ci-dessus fonctionneraient toujours. Même si vos espaces de noms de classe sont définis à l'aide de soulignements dans le nom de la classe, vous devez utiliser des barres d'arrivée dans l'argument de l'espace de noms.
Contrairement à PSR-0, la norme de mise à jour de classe PSR-4 ne nécessite pas de placer des classes dans un arbre de répertoire qui reflète l'intégralité de leur espace de noms. Au lieu de cela, une partie de l'espace de noms peut être remplacée par un chemin spécifique.
Par exemple, si votre classe 'foo bar baz' était située dans le fichier '/path/to/library/baz.php', vous pouvez enregistrer le chemin en utilisant addPrefixPath() et spécifier l'espace de noms comme démontré dans l'exemple suivant:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ( ' /path/to/Library/ ' , ' FooBar ' );
$ loader -> register ();
$ obj = new Foo Bar Baz (); Cela permet des structures de répertoires beaucoup plus courtes car l'ensemble de l'espace de noms n'a pas besoin d'être reflété dans l'arborescence d'annuaire. Il est également possible d'omettre l'argument de l'espace de noms, auquel cas le chemin fonctionnera de la même manière que les chemins ajoutés via addBasePath() , sauf pour le fait que les soulignements dans le nom de classe ne seront pas traités comme des séparateurs d'espace de noms.
Bien que vous puissiez simplement appeler plusieurs fois le chemin d'ajout de méthodes, il est possible d'ajouter plusieurs chemins à l'aide d'un tableau. Cela facilite généralement la configuration. Par exemple, vous pouvez ajouter plusieurs chemins de base en fournissant un tableau:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' /path/to/classes/ ' ,
' /other/path/ ' ,
]);
$ loader -> register ();Ou vous pouvez ajouter des chemins spécifiques à l'espace de noms en fournissant un tableau associatif qui définit les espaces de noms à l'aide des touches de tableau:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader ClassLoader ();
$ loader -> addPrefixPath ([
' FooBar ' => ' /path/to/classes/ ' ,
' OtherNamesapace ' => [ ' /other/path/ ' , ' /some/other ' ],
]);
$ loader -> register ();Comme le montre l'exemple ci-dessus, vous pouvez également fournir une liste de chemins pour l'espace de noms spécifique.
La recherche de classes dans le système de fichiers sur chaque demande est une affaire coûteuse. Il est fortement recommandé de mettre en cache les emplacements de fichiers afin qu'ils n'aient pas besoin d'être recherchés à chaque demande. Après tout, les fichiers de classe n'ont pas tendance à se déplacer dans le système de fichiers.
Cette bibliothèque fournit un système de mise en cache très simple via FileCacheClassLoader . La classe stocke les emplacements de fichiers dans un seul fichier PHP qui est chargé à chaque demande au lieu de rechercher les fichiers manuellement.
L'utilisation du FileCacheClassLoader ne diffère pas beaucoup de l'utilisation du ClassLoader . Il vous suffit de fournir le chemin d'accès à un fichier de cache écrit dans le constructeur. Le fichier sera utilisé pour stocker les emplacements de classe et sera réécrit lorsque de nouveaux fichiers de classe seront découverts. Par exemple:
<?php
require ' vendor/autoload.php ' ;
$ loader = new Riimu Kit ClassLoader FileCacheClassLoader ( __DIR__ . ' /cache.php ' );
$ loader -> addBasePath ( ' /path/to/classes/ ' );
$ loader -> register ();Cette bibliothèque est le droit d'auteur (C) 2012-2017 Riikka Kalliomäki.
Voir la licence pour la licence et la copie des informations.