Caster automatiquement des variables en PHP5 en se servant des méthodes magiques: __set & __get
Vous trouviez que PHP5 était trop permissif ? ou que l’utilisation du cast pourrait être compris dans le nom des variables ?
Vous pouvez utiliser le champs de recherche ci dessous pour trouver un article précis:
Vous trouviez que PHP5 était trop permissif ? ou que l’utilisation du cast pourrait être compris dans le nom des variables ?
Voila un petit exemple de classe illustrant la puissance des méthodes magiques __set et __get en PHP5.
Cette classe permet par le biais d’une fonction C, d’accéder en lecture seule à une configuration sur deux niveaux issue par exemple du parsage d’un fichier ini ( voir l’article Configurer son application PHP avec l’aide d’un fichier ini [...]
Voila une petite classe permettant de charger une configuration sous format ini dans la variable de classe statique __Config::$D qui devient du coup accessible depuis n’importe où dans votre script.
Attention cependant à bien sécuriser vos fichiers ini avec l’aide d’un fichier .htaccess par exemple.
<?php
/**
Final class __Config
**/
final class __Config{
private $path_ini = null;
[...]
Voila comment ajouter une fonction « make_alias » pour recréer dynamiquement des alias de fonctions.
On peut dés lors imaginer recréer facilement des alias de fonctions plus courts pour réduire la quantité de code PHP que l’on écrit:
<?php
make_alias(‘print_r’,'pr’);
pr(array(1,2,3,4));
/**
Merci à seebz pour la proposition de call_user_func
**/
function make_alias($function,$alias){
if(!function_exists($function)) return false;
elseif(function_exists($alias)) return false;
else return eval(‘function ‘.$alias.’(){
$arg = func_get_args();
return call_user_func_array("’.$function.’",$arg);
}’);
}
/**
Ancienne [...]
Voila un petit exemple pour manipuler facilement les dates en PHP5 avec un exemple de classe permettant de factoriser encore un peu plus le code:
<?php
/**
Simple exemple
**/
$date_handler = new DateTime(date("Y-m-d", easter_date(date(‘Y’))));
$easter_date = $date_handler->format("d/m/Y");
$date_handler->modify("+39 day");
$ascension_date = $date_handler->format("d/m/Y");
echo($easter_date."\r\n");
echo($ascension_date."\r\n");
/**
Final Class _Date
**/
final class _Date extends DateTime {
private $format = ‘d/m/Y’;
public function __construct($a=null){
if($a==null) $a = date("Y-m-d", microtime());
elseif(is_numeric($a)) $a = date("Y-m-d", $a);
return [...]
Designed by FTL Wordpress Themes brought to you by Smashing Magazine
adapted for blog.peewa.org by Julien Viard