27-03-2012, 01:11 PM
Bonjour,
L'utilité de mon travail n'est pas de fournir un framework à des utilisateurs, juste de faire des recherches sur l'OO en PHP. Java étant le seul langage "tout objet" que je connais, j'essaye de faire des comparaisons.
J'essaye simplement d'uniformiser les comportements de différentes classes.
Conceptuellement, je trouve plus intéressant de faire appel à un objet de type Class qui est le sommet de la hiérarchie OO pour utiliser l'introspection, et ne pas utiliser une classe à part.
Toutes les méthodes liées à une classe pourront être appelées sur un objet de type Class, ce qui uniformise toutes les méthodes liées à la classe.
La classe n'est pas terminée, donc s'il y a des choses inutilisées, c'est pour cela ;-)
Je vous présente la classe AppConfig qui permettra de charger une configuration particulière pour votre application. Je vais utiliser la fonction de parsage des fichiers .ini, l'équivalent des .properties en Java. Ca permet d'uniformiser la manière de faire les paramètres de configuration d'une application.
L'utilité de mon travail n'est pas de fournir un framework à des utilisateurs, juste de faire des recherches sur l'OO en PHP. Java étant le seul langage "tout objet" que je connais, j'essaye de faire des comparaisons.
J'essaye simplement d'uniformiser les comportements de différentes classes.
Conceptuellement, je trouve plus intéressant de faire appel à un objet de type Class qui est le sommet de la hiérarchie OO pour utiliser l'introspection, et ne pas utiliser une classe à part.
Toutes les méthodes liées à une classe pourront être appelées sur un objet de type Class, ce qui uniformise toutes les méthodes liées à la classe.
La classe n'est pas terminée, donc s'il y a des choses inutilisées, c'est pour cela ;-)
Je vous présente la classe AppConfig qui permettra de charger une configuration particulière pour votre application. Je vais utiliser la fonction de parsage des fichiers .ini, l'équivalent des .properties en Java. Ca permet d'uniformiser la manière de faire les paramètres de configuration d'une application.
Code PHP :
<?php
/**
* @name GoldFish_Core_AppSettings_AppConfig
*
*/
abstract class GoldFish_Core_AppSettings_AppConfig {
private static $INSTANCE;
/**
* Return the current instance of the AppConfig class
* @return GoldFish_Core_AppSettings_AppConfig l'instance
*/
public static function getInstance() {
if (is_null(self::$INSTANCE)) {
self::$INSTANCE = new AppConfigImpl();
}
return self::$INSTANCE;
}
/**
* Load the configuration given in argument
* @param string the configuration name
*/
abstract protected function loadContext($configName);
/**
* Return the property requested in argument
* @param string the property name
* @return string the value of the configuration property
*/
abstract protected function getProperty($name);
/**
* Return the current instance of the project's logger
* @return Logger the instance of the logger
*/
abstract protected function getLogger();
}
La classe d'implémentation :
Code PHP :
<?php
class GoldFish_Core_AppSettings_AppConfigImpl implements GoldFish_Core_AppSettings_AppConfig {
private $props;
private $logger;
public function getLogger() {
if (is_null($this->logger)) {
$this->logger = new Logger();
}
return $this->logger;
}
public function getProperty($name) {
return $this->props->getProperty($name);
}
public function loadContext($configName) {
$this->props = new Properties();
$this->props->load($configName);
}
}