Un Helper pour afficher des âges

Voici un tout petit Helper bien utile quand nous manipulons un événement daté et que nous voulons afficher le nombre d’années écoulées entre cet événement et maintenant.

1. Code source

Voici le code source à coller dans un nouveau fichier {app}/views/helpers/age.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
/**
 * Fichier de la classe AgeHelper - 30 avril 2008.
 * Calcul d'âges.
 *
 * @filesource
 * @author Pierre-Emmanuel Fringant
 * @link http://www.formation-cakephp.com/
 * @version	$Revision: 1 $
 * @license	http://www.opensource.org/licenses/mit-license.php The MIT License
 * @package app
 * @subpackage app.views.helpers
 */
class AgeHelper extends Helper
{
	/**
	 * Nombre de secondes dans une année.
	 * 1 année = 365.2422 jours * 86 400 secondes = 31556926.08 secondes.
	 * Source : http://fr.wikipedia.org/wiki/Ann%C3%A9e_bissextile
	 */
	var $secondesParAn = 31556926.08;
 
	/**
	 * Retourne le nombre d'années entre un timestamp et maintenant.
	 *
	 * @param integer $timestamp Timestamp Unix
	 * @return float Intervalle entre $timestamp et maintenant en années
	 */
	function timestampToAge($timestamp = 0)
	{
		if(!$timestamp or !is_int($timestamp))
		{
			return false;
		}
 
		$secondesVecues = time() - $timestamp;
 
		return floor($secondesVecues / $this->secondesParAn);
	}
 
	/**
	 * Retourne le nombre d'années entre une date et maintenant
	 *
	 * @param string $date Date de départ.
	 *                     Doit respecter le format attendu par la fonction strtotime() :
	 *                     http://www.php.net/manual/fr/function.strtotime.php
	 * @return float Intervalle entre la date $date et maintenant en années
	 */
	function dateToAge($date = null)
	{
		if(!$date)
		{
			return false;
		}
 
		return $this->timestampToAge(strtotime($date));
	}
}
?>

2. Usage

2.1 Appel du Helper dans le Contrôleur

Imaginons une gestion de personnes à qui nous demandons leur date de naissance. Nous allons commencer par dire au Contrôleur PersonnesController que nous allons avoir besoin du Helper AgeHelper :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// {app}/controllers/personnes_controller.php
class PersonnesController extends AppController
{
	var $helpers = array('Age');
 
	function view($id = null)
	{
		$personne = $this->Personne->find(
			'first',
			array(
				'conditions' => array(
					'id' => $id
				)
			)
		);
 
		if(empty($personne ))
		{
			$this->cakeError('error404', array(array('url' => $this->action)));
		}
 
		$this->set(compact('personne'));
	}
}

2.2 Appel du Helper dans une Vue

1
2
3
4
5
6
7
8
9
// {app}/views/personnes/view.ctp
<dl>
	<dt>
		Age :
	</dt>
	<dd>
		<?php e($age->dateToAge($personne ['Personne']['date_naissance'])); ?> ans
	</dd>
</dl>
Pierre-Emmanuel Fringant

Articles connexes

Participez

Pour insérer une portion de code, utilisez <pre lang="php">...</pre>