Configurer les objets PHP comme en JavaScript

Configurer les objets PHP comme en JavaScript

Pour faire encore un peu durer le suspens avec un titre aussi attrayant (ou pas), je profite de cette introduction pour vous souhaiter une excellente année 2015 !

Les setters en PHP

D’habitude, les setters de classe PHP ont pour but de définir une propriété, et… c’est tout.

Ils se présentent sous cette forme :

class User {
	private $name = "";
	private $age = "";

	public function setName($name) {
		$this->name = $name;
	}

	public function setAge($age) {
		$this->age = $age;
	}
}

Et pour les utiliser :

$user = new User();
$user->setName("Maurice Moss");
$user->setAge(42);

Un peu de changement

En JavaScript, il est possible de chainer des définitions de configuration, ou bien d’autres actions, comme les promises, sur la même ligne (enfin presque).

Et où est le rapport avec PHP ?

Il est tout simple : si comme moi vous trouvez cette façon d’écrire ou de lire du code plutôt sympa, il est possible de faire la même chose avec les objets PHP, en retournant $this à la fin des setters :

class User {
	private $name = "";
	private $age = "";

	public function setName($name) {
		$this->name = $name;
		return $this;
	}

	public function setAge($age) {
		$this->age = $age;
		return $this;
	}
}

Son utilisation devient :

$user = new User();
$user
	->setName("Maurice Moss")
	->setAge(42);

Et encore plus court :

$user = (new User())
	->setName("Maurice Moss")
	->setAge(42);

Le mot de la fin

Ce n’est pas grand chose, mais je trouve cette méthode pratique.

En tout cas, cette manière d’écrire fait désormais partie de mes bonnes pratiques de développement en PHP.

L'illustration de cet article est une image sous licence CC BY-SA 3.0 par Chatsam

Cet article vous a été utile ? Partage it !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Si vous le souhaitez, renseignez le champ 'Nom' de cette façon : 'VotreNom@VotreMotClef' pour obtenir une ancre optimisée pour les moteurs de recherche.