Rechercher une fonction PHP

La classe Yaf_Loader

(Yaf >=1.0.0)

Introduction

Yaf_Loader introduit une solution d'autochargement compréhensive pour Yaf.

La première fois qu'une instance de la classe Yaf_Application est récupérée, Yaf_Loader instancie un squelette, et l'enregistre avec spl_autoload. Vous pouvez récupérer cette instance en utilisant la méthode Yaf_Loader::getInstance().

Yaf_Loader tente de charger une classe en une fois ; si cette tentative échoue, et suivant la configuration de yaf.use_spl_auload (si défini à On), Yaf_Loader::autoload() retournera FALSE, rendant ainsi la main aux autres fonctions d'auto-chargement. Si cette option de configuration vaut Off (par défaut), Yaf_Loader::autoload() retournera TRUE,et, le plus important, une alerte bien utile sera émise (très utile pour trouver la classe qui n'arrive pas à se charger).

Note:

Veuillez conserver yaf.use_spl_autoload à Off à moins qu'il y a d'autres bibliothèques qui possèdent son propre système de chargement et puissent ré-écrire ce comportement.

Par défaut, Yaf_Loader se charge de toutes les bibliothèques (classe définie par des scripts) stockées dans le dossier global des bibliothèques, quui est défini dans le fichier php.ini(yaf.library).

Si vous voulez que la classe Yaf_Loader cherche des classes (ou des bibliothèques) dans le dossier des classes locales (qui est défini dans le fichier application.ini, et par défaut, vaut application.directory . "/library"), vous devez enregistrer le préfixe de la classe en utilisant la méthode Yaf_Loader::registerLocalNameSpace()

Voyons quelques exemples (en supposant que APPLICATION_PATH vaut application.directory):

Exemple #1 Exemple de configuration

// Supposons les options de configuration du php.ini suivantes :
yaf.library = "/global_dir"

// Supposons les options de configuration de application.ini suivantes :
application.library = APPLICATION_PATH "/library"
Supposons que l'espace de noms suivant est enregistré :

Exemple #2 Enregistrement de localnamespace

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
     public function 
_initLoader($dispatcher) {
          
Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo""Bar"));
     }
?>
Alors, les exemples d'autochargements seront :

Exemple #3 Load class example

class Foo_Bar_Test =>
  // APPLICATION_PATH/library/Foo/Bar/Test.php
  
class GLO_Name  =>
  // /global_dir/Glo/Name.php
 
class BarNon_Test
  // /global_dir/Barnon/Test.php
Depuis PHP 5.3, vous pouvez utiliser les espaces de noms :

Exemple #4 Exemple de chargement de classe via des espaces de noms

class \Foo\Bar\Dummy =>
   // APPLICATION_PATH/library/Foo/Bar/Dummy.php

class \FooBar\Bar\Dummy =>
   // /global_dir/FooBar/Bar/Dummy.php

Vous pouvez noter que tous les noms de dossiers commençent par une lettre majuscule ; vous pouvez utiliser une lettre minuscule en définissant l'option de configuration yaf.lowcase_path = On dans le fichier php.ini.

Yaf_Loader est également prévu pour charger les classes MVC, et la règle est :

Exemple #5 Exemple de chargement de classe MVC

Controller Classes =>
// APPLICATION_PATH/controllers/

Model Classes =>
// APPLICATION_PATH/models/

Plugin Classes =>
// APPLICATION_PATH/plugins/
Yaf identifie un suffixe de classe (comportement par défaut, vous pouvez également modifier ce comportement via l'option de configuration yaf.name_suffix) pour décider si c'est une classe MVC :

Exemple #6 Distinctions d'une classe MVC

Controller Classes =>
    // ***Controller

Model Classes =>
    // ***Model

Plugin Classes =>
    // ***Plugin
quelques exemples :

Exemple #7 Exemple de chargement MVC

class IndexController
    // APPLICATION_PATH/controllers/Index.php

class DataModel =>
   // APPLICATION_PATH/models/Data.php

class DummyPlugin =>
  // APPLICATION_PATH/plugins/Dummy.php

class A_B_TestModel =>
  // APPLICATION_PATH/models/A/B/Test.php

Note:

Depuis la version 2.1.18, Yaf supporte l'autochargement des constructeurs pour les scripts utilisateurs (ce qui signifie que l'autochargement est déclenché par un script PHP utilisateur, i.e. accès à une propriété statique du contrôleur dans le Bootstrap ou les plugins), mais l'autochargement tente uniquement de localiser le script contenant la classe du contrôleur dans le dossier par défaut du module, qui est "APPLICATION_PATH/controllers/".

aussi, le dossier sera affecté par yaf.lowcase_path.

Retour à la première page de Manuel PHP  Table des matières Haut

Synopsis de la classe

Yaf_Loader {
/* Propriétés */
protected $_local_ns ;
protected $_library ;
protected $_global_library ;
static $_instance ;
/* Méthodes */
public autoload ( void ) : void
public clearLocalNamespace ( void ) : void
private __clone ( void ) : void
private __construct ( void )
public static getInstance ( void ) : void
public getLibraryPath ([ bool $is_global = FALSE ] ) : Yaf_Loader
public getLocalNamespace ( void ) : void
public static import ( void ) : void
public isLocalName ( void ) : void
public registerLocalNamespace ( mixed $prefix ) : void
public setLibraryPath ( string $directory [, bool $is_global = FALSE ] ) : Yaf_Loader
private __sleep ( void ) : void
private __wakeup ( void ) : void
}

Retour à la première page de Manuel PHP  Table des matières Haut

Propriétés

_local_ns

_library

Par défaut, cette valeur vaut application.directory . "/library" ; vous pouvez modifier ce comportement soit via l'option de configuration application.ini(application.library), soit en appelant la méthode Yaf_Loader::setLibraryPath().

_global_library

_instance

Retour à la première page de Manuel PHP  Table des matières Haut

Sommaire

Rechercher une fonction PHP

Version en cache

23/12/2024 00:40:41 Cette version de la page est en cache (à la date du 23/12/2024 00:40:41) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.yaf-loader.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut