J'ai un dilemme sur la façon d'implémenter des états pour des objets. Disons que nous avons ceci:PHP: implémenter des états avec des objets
class User {
private $_active;// 1 or 0
private $_deleted;// 1 or 0
...
}
Ces propriétés - comme je le vois - implique un état sur l'objet utilisateur. Ce que je voudrais faire est de définir des événements comme afterActivate() ou afterDelete() afin que je puisse enchaîner mes routines. C'est à dire. après l'activation mise à jour de certains compteurs, après la suppression également mettre à jour certains compteurs ...
Donc, je considère deux approches pour le moment - le premier est de créer des classes activables et supprimables (ne pas déranger la dénomination), puis faire L'utilisateur hérite de ces classes via une hiérarchie d'héritage.
class Activable {
protected afterActivate(){};
}
class Deletable {
protected afterDelete(){};
}
class Activable extends Deletable {}
class User extends Activable{}
Il y a deux problèmes que je vois cette approche - première est que la classe activable est maintenant implicite état qui est erroné Supprimable et deuxième problème est - si j'ai plusieurs Etats - 5-6 états de la hiérarchie d'héritage peut devenir assez complexe. (parce que l'utilisateur étendra la classe de modèle qui prolongera quelque chose d'autre etc ...)
La deuxième approche consiste à utiliser des traits dans PHP et à les utiliser pour y parvenir. Je voudrais avoir quelque chose comme
class User{
use Activable, Deletable;
}
Quelle approche serait mieux - une approche peut-être 3? Suis-je dans la bonne direction ici?
Thanx.
Puisque votre réponse est la seule et que Marker Interface est une solution viable, je l'accepterai comme la bonne réponse. – Mathew