Object
La classe Object implémente les messages de base du modèle So-o. Toutes les autres classes héritent de la classe Object.
Tout le code de la classe Object de So-o est dans le fichier Object.php.
- namespace Object;
- use \InvalidArgumentException as InvalidArgumentException;
Place le code de la classe Object dans son espace de nommage.
- require_once 'OL.php';
Charge le code de l'Object Layer.
- define(__NAMESPACE__ . '\InvalidClassProperty', '%s::%s Invalid class property');
- define(__NAMESPACE__ . '\InvalidClassMessage', '%s::%s Invalid class message');
- define(__NAMESPACE__ . '\InvalidInstanceProperty', '%s::%s Invalid instance property');
- define(__NAMESPACE__ . '\InvalidInstanceMessage', '%s::%s Invalid instance message');
- define(__NAMESPACE__ . '\NotImplemented', '%s::%s Not implemented');
- define(__NAMESPACE__ . '\SubclassResponsibility', '%s::%s Subclass responsibility');
Définit les textes des messages d'erreurs retournés par la classe Object.
- defclass('Object',
- // superclass
- null,
- // revision
- 1,
- // class properties
- null,
- // instance properties
- null,
- // class messages
- array('get', 'set', 'make', 'new', 'initialize', 'free', 'class', 'name', 'superclass', 'classMessages', 'instanceMessages', 'classProperties', 'instanceProperties', 'classMethodFor', 'instanceMethodFor', 'perform', 'read', 'write', 'error', 'doesNotContain', 'doesNotRecognize', 'notImplemented', 'subclassResponsibility', 'revision', 'addInstanceMessage', 'removeInstanceMessage', 'addClassMessage', 'removeClassMessage', 'addInstanceProperty', 'removeInstanceProperty', 'addClassProperty', 'removeClassProperty', 'check'),
- // instance messages
- array('get', 'set', 'init', 'free', 'class', 'superclass', 'perform', 'delegate', 'setDelegate', 'respondsTo', 'methodFor', 'isKindOf', 'copy', 'read', 'write', 'assume', 'toString', 'print', 'error', 'doesNotContain', 'doesNotRecognize', 'notImplemented', 'subclassResponsibility', 'messages', 'properties')
- );
La classe Object est la seule classe qui n'hérite d'aucune superclasse. Elle n'a pas de propriétés de classe ou d'instance. Elle implémente tous les messages de base du modèle So-o.
MÉTHODES DE CLASSE
free
SYNOPSIS
free($self)
DESCRIPTION
free est automatiquement envoyé par l'Object Layer à une classe qui n'est plus référencée.
La méthode free
définie par la classe Object ne fait rien.
IMPORTANT : Si vous décidez de supprimer la méthode __destruct
de la classe Definition de l'Object Layer, le conteneur d'une classe, free ne sera pas automatiquement envoyé.
CODE
- function c_free($self) {
- }
free
ne fait rien.
initialize
SYNOPSIS
initialize($self)
DESCRIPTION
initialize est automatiquement envoyé à une nouvelle classe par defclass
.
La méthode initialize
définie par la classe Object ne fait rien.
initialize est généralement redéfini par une classe qui doit initialiser ses propriétés de classe.
CODE
- function c_initialize ($self) {
- return $self;
- }
initialize
ne fait rien et retourne $self
.
class
name
revision
superclass
SYNOPSIS
class($self)
name($self)
revision($self)
superclass($self)
DESCRIPTION
class
retourne la classe de la classe $self
, i.e. $self
.
name
retourne le nom de la classe $self
.
revision
retourne le numéro de révision de la classe $self
.
superclass
retourne la superclasse de la classe $self
, null
si $self
est $Object
, la classe Object.
CODE
- function c_class($self) {
- return $self;
- }
- function c_name($self) {
- return \OL\class_name($self);
- }
- function c_revision($self) {
- return \OL\class_revision($self);
- }
- function c_superclass($self) {
- return \OL\class_superclass($self);
- }
class
retourne $self
.
name
, revision
et superclass
retournent le résultat des fonctions class_name
, class_revision
et class_superclass
de l'Object Layer.
get
set
SYNOPSIS
get($self, $attribute)
set($self, $attribute, $value)
DESCRIPTION
get
retourne la valeur de la propriété $attribute
de $self
.
set
met la valeur de la propriété $attribute
de $self
à $value
.
IMPORTANT : get
retourne une valeur, pas une référence d'une valeur. Pour modifier le contenu d'un attribut dont la valeur est un tableau, récupérez la valeur avec get, modifiez-la puis changez la valeur de la propriété avec set.
CODE
- function c_get($self, $attribute) {
- return \OL\class_get($self, $attribute);
- }
- function c_set($self, $attribute, $value) {
- return \OL\class_set($self, $attribute, $value);
- }
get
et set
retournent le résultat des fonctions class_get
et class_set
de l'Object Layer.
make
new
SYNOPSIS
make($self)
new($self[, $arg ...])
DESCRIPTION
make
retourne une nouvelle instance de $self
.
new
crée une instance de $self
, lui envoie le message init avec les paramètres du message suivant $self
et retourne la nouvelle instance initialisée.
IMPORTANT : Créez toujours une instance avec new.
CODE
- function c_make($self) {
- return \OL\class_make($self);
- }
- function c_new($self) {
- return \OL\object_send_message(\OL\class_send_message($self, 'make'), 'init', array_slice(func_get_args(), 1));
- }
make
retourne le résultat de la fonction class_make
de l'Object Layer.
new
crée une instance en envoyant make à $self
, lui envoie init avec les paramètres du message suivant $self
et retourne la nouvelle instance.
perform
SYNOPSIS
perform($self, $message, $args=false)
DESCRIPTION
perform
retourne le résultat de l'envoi du message $message
à $self
avec $args
en argument.
$args
est un tableau.
Par défaut, le message n'a pas d'argument.
CODE
- function c_perform($self, $message, $args=false) {
- return \OL\class_send_message($self, $message, $args);
- }
perform
retourne le résultat de l'envoi de $message
et de $args
à $self
.
read
write
SYNOPSIS
read($self, $data)
write($self)
DESCRIPTION
write
retourne la sérialisation des attributs de $self
.
read
initialise les attributs de $self
avec $data
.
$data
est un tableau de valeurs sérialisé.
CODE
- function c_read($self, $data) {
- $properties=\OL\class_send_message($self, 'classProperties', array(true));
- if (!$properties) {
- return $self;
- }
- $data=unserialize($data);
- if (!is_array($data)) {
- throw new InvalidArgumentException();
- }
- $attributes=array();
- foreach ($properties as $prop) {
- if (isset($data[$prop])) {
- $attributes[$prop]=$data[$prop];
- }
- }
- return \OL\class_set_attributes($self, $attributes);
- }
- function c_write($self) {
- return serialize(\OL\class_attributes($self));
- }
write
appelle la fonction serialize
avec en argument le tableau des attributs de $self
et retourne le résultat.
read
obtient la liste des propriétés de $self
, appelle la fonction unserialize
avec $data
en argument, vérifie que le résultat est un tableau, puis initialise chaque attribut de $self
avec la valeur correspondante extraite de ce tableau.
classMessages
instanceMessages
classMethodFor
instanceMethodFor
addClassMessage
removeClassMessage
addInstanceMessage
removeInstanceMessage
SYNOPSIS
classMessages($self, $inherit=true)
instanceMessages($self, $inherit=true)
classMethodFor($self, $message)
instanceMethodFor($self, $message)
addClassMessage($self, $message)
removeClassMessage($self, $message)
addInstanceMessage($self, $message)
removeInstanceMessage($self, $message)
DESCRIPTION
classMessages
retourne les messages de classe de $self
dans un tableau.
Si $inherit
vaut true
, classMessages
retourne aussi les messages de classe hérités de toutes les superclasses de $self
.
instanceMessages
retourne les messages d'instance de $self
dans un tableau.
Si $inherit
vaut true
, instanceMessages
retourne aussi les messages d'instance hérités de toutes les superclasses de $self
.
classMethodFor
retourne la fonction qui implémente le message de classe $message
de $self
.
instanceMethodFor
retourne la fonction qui implémente le message d'instance $message
de $self
.
addClassMessage
ajoute le message de classe $message
à $self
.
removeClassMessage
retire le message de classe $message
à $self
.
addInstanceMessage
ajoute le message d'instance $message
à $self
.
removeInstanceMessage
retire le message d'instance $message
à $self
.
CODE
- function c_classMessages($self, $inherit=true) {
- $messages=\OL\class_class_messages($self);
- if ($messages) {
- $messages=array_keys($messages);
- }
- if ($inherit) {
- $superclass=\OL\class_superclass($self);
- if ($superclass) {
- $inherited_messages=\OL\class_send_message($superclass, 'classMessages', array(true));
- if ($inherited_messages) {
- $messages=$messages ? array_unique(array_merge($messages, $inherited_messages)) : $inherited_messages;
- }
- }
- }
- return $messages;
- }
- function c_instanceMessages($self, $inherit=true) {
- $messages=\OL\class_instance_messages($self);
- if ($messages) {
- $messages=array_keys($messages);
- }
- if ($inherit) {
- $superclass=\OL\class_superclass($self);
- if ($superclass) {
- $inherited_messages=\OL\class_send_message($superclass, 'instanceMessages', array(true));
- if ($inherited_messages) {
- $messages=$messages ? array_unique(array_merge($messages, $inherited_messages)) : $inherited_messages;
- }
- }
- }
- return $messages;
- }
- function c_classMethodFor($self, $message) {
- return \OL\class_find_class_method($self, $message);
- }
- function c_instanceMethodFor($self, $message) {
- return \OL\class_find_instance_method($self, $message);
- }
- function c_addClassMessage($self, $message) {
- return \OL\class_add_class_message($self, $message);
- }
- function c_removeClassMessage($self, $message) {
- return \OL\class_remove_class_message($self, $message);
- }
classMessages
met $messages
à la liste des messages de classe de $self
, ajoute les messages de classe des superclasses de $self
, en supprimant les doublons, si $inherit
vaut true
puis retourne $messages
.
instanceMessages
met $messages
à la liste des messages d'instance de $self
, ajoute les messages d'instance des superclasses de $self
, en supprimant les doublons, si $inherit
vaut true
puis retourne $messages
.
classMethodFor
, instanceMethodFor
, addClassMessage
, removeClassMessage
, addInstanceMessage
et removeInstanceMessage
retournent le résultat des fonctions class_find_class_method
, class_find_instance_method
, class_add_class_message
, class_remove_class_message
, class_add_instance_message
et class_remove_instance_message
de l'Object Layer.
classProperties
instanceProperties
addClassProperty
removeClassProperty
addInstanceProperty
removeInstanceProperty
SYNOPSIS
classProperties($self, $inherit=true)
instanceProperties($self, $inherit=true)
addClassProperty($self, $property)
removeClassProperty($self, $property)
addInstanceProperty($self, $property)
removeInstanceProperty($self, $property)
DESCRIPTION
classProperties
retourne les propriétés de classe de $self
dans un tableau.
Si $inherit
vaut true
, classProperties
retourne aussi les propriétés de classe héritées de toutes les superclasses de $self
.
instanceProperties
retourne les propriétés d'instance de $self
dans un tableau.
Si $inherit
vaut true
, instanceProperties
retourne aussi les propriétés d'instance héritées de toutes les superclasses de $self
.
addClassProperty
ajoute la propriété de classe $property
à $self
.
removeClassProperty
retire la propriété de classe $property
à $self
.
addInstanceProperty
ajoute la propriété d'instance $property
à $self
.
removeInstanceProperty
retire la propriété d'instance $property
à $self
.
CODE
- function c_addInstanceMessage($self, $message) {
- return \OL\class_add_instance_message($self, $message);
- }
- function c_removeInstanceMessage($self, $message) {
- return \OL\class_remove_instance_message($self, $message);
- }
- function c_classProperties($self, $inherit=true) {
- $properties=\OL\class_class_properties($self);
- if ($properties) {
- $properties=array_keys($properties);
- }
- if ($inherit) {
- $superclass=\OL\class_superclass($self);
- if ($superclass) {
- $inherited_properties=\OL\class_send_message($superclass, 'classProperties', array(true));
- if ($inherited_properties) {
- $properties=$properties ? array_unique(array_merge($properties, $inherited_properties)) : $inherited_properties;
- }
- }
- }
- return $properties;
- }
- function c_instanceProperties($self, $inherit=true) {
- $properties=\OL\class_instance_properties($self);
- if ($properties) {
- $properties=array_keys($properties);
- }
- if ($inherit) {
- $superclass=\OL\class_superclass($self);
- if ($superclass) {
- $inherited_properties=\OL\class_send_message($superclass, 'instanceProperties', array(true));
- if ($inherited_properties) {
- $properties=$properties ? array_unique(array_merge($properties, $inherited_properties)) : $inherited_properties;
- }
- }
- }
- return $properties;
- }
classProperties
met $properties
à la liste des propriétés de classe de $self
, ajoute les propriétés de classe des superclasses de $self
, en supprimant les doublons, si $inherit
vaut true
puis retourne $properties
.
instanceProperties
met $properties
à la liste des propriétés d'instance de $self
, ajoute les propriétés d'instance des superclasses de $self
, en supprimant les doublons, si $inherit
vaut true
puis retourne $properties
.
addClassProperty
, removeClassProperty
, addInstanceProperty
et removeInstanceProperty
retournent le résultat des fonctions class_add_class_property
, class_remove_class_property
, class_add_instance_property
et class_remove_instance_property
de l'Object Layer.
error
doesNotContain
doesNotRecognize
notImplemented
subclassResponsibility
SYNOPSIS
error($self, $err[, $arg ...])
doesNotContain($self, $property)
doesNotRecognize($self, $message)
notImplemented($self, $message)
subclassResponsibility($self, $message)
DESCRIPTION
error
déclenche une erreur PHP de niveau E_USER_ERROR
dont le texte est formaté avec la fonction sprintf
avec en argument $err
et les paramètres du message suivant $err
.
doesNotContain
envoie le message error à $self
avec en argument la constante InvalidClassProperty
, le nom de la classe $self
et $property
.
doesNotRecognize
envoie le message error à $self
avec en argument la constante InvalidClassMessage
, le nom de la classe $self
et $message
.
notImplemented
envoie le message error à $self
avec en argument la constante NotImplemented
, le nom de la classe $self
et $message
.
subclassResponsibility
envoie le message error à $self
avec en argument la constante SubclassResponsibility
, le nom de la classe $self
et $message
.
doesNotContain et doesNotRecognize sont envoyés par l'Object Layer. notImplemented est généralement envoyé par une méthode qui n'est pas encore codée alors que subclassResponsibility est envoyé par une méthode qui doit être implémentée par une sous-classe d'une classe abstraite.
CODE
- function c_addClassProperty($self, $property) {
- return \OL\class_add_class_property($self, $property);
- }
- function c_removeClassProperty($self, $property) {
- return \OL\class_remove_class_property($self, $property);
- }
- function c_addInstanceProperty($self, $property) {
- return \OL\class_add_instance_property($self, $property);
- }
- function c_removeInstanceProperty($self, $property) {
- return \OL\class_remove_instance_property($self, $property);
- }
- function c_error ($self, $err) {
- $errmsg=call_user_func_array('sprintf', array_merge(array($err), array_slice(func_get_args(), 2)));
- return trigger_error($errmsg, E_USER_ERROR);
- }
error
formate le message d'erreur $errmsg
en passant $err
et le reste des arguments suivant $err
à sprintf
puis appelle trigger_error
avec en argument $errmsg
et le niveau d'erreur E_USER_ERROR
.
doesNotContain
, doesNotRecognize
, notImplemented
et subclassResponsibility
envoient le message error à $self
avec en argument la constante du message d'erreur correspondant et ses paramètres.
check
SYNOPSIS
check($self)
DESCRIPTION
check
vérifie l'intégrité de la classe $self
.
check
retourne un tableau de 4 tableaux.
Le premier liste les messages de classe qui n'ont pas de fonctions correspondantes dans l'espace de nommage de la classe $self
.
Le second liste les messages de classe qui ne sont pas mentionnés dans la définition de la classe $self
alors qu'une fonction correspondante a été trouvée dans son espace de nommage.
Le troisième liste les messages d'instance qui n'ont pas de fonctions correspondantes dans l'espace de nommage de la classe $self
.
Le quatrième liste les messages d'instance qui ne sont pas mentionnés dans la définition de la classe $self
alors qu'une fonction correspondante a été trouvée dans son espace de nommage.
CODE
- function c_doesNotContain($self, $property) {
- return \OL\class_send_message($self, 'error', array(InvalidClassProperty, \OL\class_name($self), $property));
- }
check
retourne le résultat de la fonction class_check
de l'Object Layer.
MÉTHODES D'INSTANCE
class
superclass
messages
properties
SYNOPSIS
class($self)
superclass($self)
messages($self, $inherit=true)
properties($self, $inherit=true)
DESCRIPTION
class
retourne la classe de $self
.
superclass
retourne la superclasse de la classe de $self
, i.e. null
si $self
est une instance de la classe Object.
messages
retourne les messages reconnus par $self
dans un tableau.
Si $inherit
vaut true
, messages
retourne aussi les messages hérités de toutes les superclasses de $self
.
$inherit
vaut true
par défaut.
properties
retourne les propriétés de $self
dans un tableau.
Si $inherit
vaut true
, properties
retourne aussi les propriétés héritées de toutes les superclasses de $self
.
$inherit
vaut true
par défaut.
CODE
- function i_class($self) {
- return \OL\object_class($self);
- }
- function i_superclass($self) {
- return \OL\class_superclass(\OL\object_class($self));
- }
- function i_messages($self, $inherit=true) {
- return \OL\class_send_message(\OL\object_class($self), 'instanceMessages', array($inherit));
- }
- function i_properties($self, $inherit=true) {
- return \OL\class_send_message(\OL\object_class($self), 'instanceProperties', array($inherit));
- }
class
retourne le résultat de la fonction object_class
de l'Object Layer.
superclass
retourne le résultat de la fonction class_superclass
avec en argument la classe de $self
.
messages
envoie le message instanceMessages à la classe de $self
avec $inherit
en argument.
properties
envoie le message instanceProperties à la classe de $self
avec $inherit
en argument.
isKindOf
methodFor
respondsTo
assume
SYNOPSIS
isKindOf($self, $class)
methodFor($self, $message)
respondsTo($self, $message)
assume($self, $class)
DESCRIPTION
isKindOf
retourne true
si $self
est une instance de la classe ou d'une sous-classe de $class
ou false
dans le cas contraire.
methodFor
retourne la fonction qui implémente le message $message
pour $self
ou false
si $self
ne répond pas à $message
.
respondsTo
retourne true
si $self
a une méthode pour le message $message
, false
dans le cas contraire.
assume
change la classe de $self
à $class
.
Les valeurs des propriétés de la classe précédente de $self
qui ne font pas partie de la classe $class
sont conservées mais elles ne sont pas accessibles.
CODE
- function i_isKindOf($self, $class) {
- return \OL\class_is_kind_of(\OL\object_class($self), $class);
- }
- function i_methodFor($self, $message) {
- return \OL\class_find_instance_method(\OL\object_class($self), $message);
- }
- function i_respondsTo($self, $message) {
- return \OL\class_find_instance_method(\OL\object_class($self), $message) ? true : false;
- }
- function i_assume($self, $class) {
- return \OL\object_assume($self, $class);
- }
isKindOf
retourne le résultat de la fonction class_is_kind_of
de l'Object Layer avec en argument la classe de $self
et $class
.
methodFor
retourne le résultat de la fonction class_find_instance_method
avec en argument la classe de $self
et $message
.
respondsTo
retourne true
si le résultat de la fonction class_find_instance_method
avec en argument la classe de $self
et $message
n'est pas false
, true
dans le cas contraire.
assume
appelle la fonction object_assume
avec $class
en argument.
free
SYNOPSIS
free($self)
DESCRIPTION
free est automatiquement envoyé par l'Object Layer à une instance qui n'est plus référencée.
La méthode free
définie par la classe Object ne fait rien.
IMPORTANT : Si vous décidez de supprimer la méthode __destruct
de la classe Instance de l'Object Layer, le conteneur d'une instance, free ne sera pas automatiquement envoyé.
CODE
- function i_free($self) {
- }
free
ne fait rien.
init
SYNOPSIS
init($self[, $arg ...])
DESCRIPTION
init est automatiquement envoyé à une nouvelle instance par new.
La méthode init
définie par la classe Object ne fait rien.
init est généralement redéfini par une classe qui doit initialiser ses propriétés d'instance.
CODE
- function i_init($self) {
- return $self;
- }
init
ne fait rien et retourne $self
.
copy
SYNOPSIS
copy($self)
DESCRIPTION
copy
retourne une copie de $self
.
CODE
- function i_copy ($self) {
- return \OL\object_copy($self);
- }
copy
retourne le résultat de la fonction object_copy
de l'Object Layer.
toString
SYNOPSIS
toString($self)
print($self, $eol=false)
DESCRIPTION
toString
retourne une représentation lisible de $self
.
La méthode toString
de la classe Object retourne une chaîne de caractères vide.
print
écrit la représentation lisible de $self
dans le tampon de sortie standard.
Si $eol
vaut true
, print
ajoute un renvoi à la ligne.
$eol
vaut false
par défaut.
print
retourne $self
.
CODE
- function i_toString($self) {
- return '';
- }
- function i_print($self, $eol=false) {
- echo \OL\object_send_message($self, 'toString');
- if ($eol) {
- echo PHP_EOL;
- }
- return $self;
- }
toString
retourne une chaîne de caractères vide.
print
écrit le résultat de l'envoi du message toString à $self
dans le tampon de sortie standard, ajoute la valeur de la constante PHP_EOL
si $eol
vaut true
et retourne $self
.
get
set
SYNOPSIS
get($self, $attribute)
set($self, $attribute, $value)
DESCRIPTION
get
retourne la valeur de la propriété $attribute
de $self
.
set
met la valeur de la propriété $attribute
de $self
à $value
.
Si $attribute
n'est pas une propriété de $self
, le message doesNotContain est envoyé à $self
avec $attribute
en argument.
IMPORTANT : get
retourne une valeur, pas une référence d'une valeur. Pour modifier le contenu d'un attribut dont la valeur est un tableau, récupérez la valeur avec get, modifiez-la puis changez la valeur de la propriété avec set.
CODE
- function i_get($self, $property) {
- return \OL\object_get($self, $property);
- }
- function i_set($self, $property, $value) {
- return \OL\object_set($self, $property, $value);
- }
get
et set
retournent le résultat des fonctions instance_get
et instance_set
de l'Object Layer.
get
retourne le résultat de la fonction object_get
de l'Object Layer avec en argument $attribute
.
set
retourne le résultat de la fonction object_set
de l'Object Layer avec en argument $attribute
et $value
.
perform
SYNOPSIS
perform($self, $message, $args=false)
DESCRIPTION
perform
retourne le résultat de l'envoi du message $message
à $self
avec $args
en argument.
$args
est un tableau.
Par défaut, le message n'a pas d'argument.
CODE
- function i_perform($self, $message, $args=false) {
- return \OL\object_send_message($self, $message, $args);
- }
perform
retourne le résultat de l'envoi de $message
et de $args
à $self
.
read
write
SYNOPSIS
read($self, $data)
write($self)
DESCRIPTION
write
retourne la sérialisation des attributs de $self
.
read
initialise les attributs de $self
avec $data
.
$data
est un tableau de valeurs sérialisé.
CODE
- function i_read($self, $data) {
- $properties=\OL\class_send_message(\OL\object_class($self), 'instanceProperties', array(true));
- if (!$properties) {
- return $self;
- }
- $data=unserialize($data);
- if (!is_array($data)) {
- throw new InvalidArgumentException();
- }
- $attributes=array();
- foreach ($properties as $prop) {
- if (isset($data[$prop])) {
- $attributes[$prop]=$data[$prop];
- }
- }
- return \OL\object_set_attributes($self, $attributes);
- }
- function i_write($self) {
- return serialize(\OL\object_attributes($self));
- }
write
appelle la fonction serialize
avec en argument le tableau des attributs de $self
et retourne le résultat.
read
obtient la liste des propriétés de $self
, appelle la fonction unserialize
avec $data
en argument, vérifie que le résultat est un tableau, puis initialise chaque attribut de $self
avec la valeur correspondante extraite de ce tableau.
delegate
setDelegate
SYNOPSIS
delegate($self, $msg=false[, $arg ...])
setDelegate($self, $delegate)
DESCRIPTION
delegate
retourne le résultat de l'envoi du message $msg
et des arguments $arg
suivant $msg
au délégué de $self
.
Si $self
n'a pas de délégué ou si le délégué de $self
ne répond pas au message $msg
, delegate
retourne false
.
Si $msg
vaut false
, delegate
retourne le délégué de $self
.
setDelegate
initialise la propriété delegate de $self
avec $delegate
.
NOTE : Envoyer delegate ou setDelegate à une instance qui n'a pas la propriété delegate envoie le message doesNotContain à l'instance.
CODE
- function i_delegate($self, $msg=false) {
- $delegate=\OL\object_get($self, 'delegate');
- if (!$msg) {
- return $delegate;
- }
- if (!$delegate) {
- return false;
- }
- if (!\OL\object_send_message($delegate, 'respondsTo', array($msg))) {
- return false;
- }
- return \OL\object_send_message($delegate, $msg, array_slice(func_get_args(), 2));
- }
- function i_setDelegate($self, $delegate) {
- if (!(is_null($delegate) or is_object($delegate))) {
- throw new InvalidArgumentException();
- }
- return \OL\object_set($self, 'delegate', $delegate);
- }
delegate
met $delegate
à la valeur de la propriété delegate de $self
, retourne $delegate
si $msg
vaut false
, retourne false
si $delegate
vaut null
ou si $delegate
ne répond pas à $msg
, retourne le résultat de l'envoi de $msg
avec les arguments de delegate
suivants $msg
à $delegate
.
setDelegate
vérifie que $delegate
est null
ou un objet puis met la propriété delegate de $self
à $delegate
.
error
doesNotContain
doesNotRecognize
notImplemented
subclassResponsibility
SYNOPSIS
error($self, $err[, $arg ...])
doesNotContain($self, $property)
doesNotRecognize($self, $message)
notImplemented($self, $message)
subclassResponsibility($self, $message)
DESCRIPTION
error
déclenche une erreur PHP de niveau E_USER_ERROR
dont le texte est formaté avec la fonction sprintf
avec en argument $err
et les paramètres du message suivant $err
.
doesNotContain
envoie le message error à $self
avec en argument la constante InvalidClassProperty
, le nom de la classe de $self
et $property
.
doesNotRecognize
envoie le message error à $self
avec en argument la constante InvalidClassMessage
, le nom de la classe de $self
et $message
.
notImplemented
envoie le message error à $self
avec en argument la constante NotImplemented
, le nom de la classe de $self
et $message
.
subclassResponsibility
envoie le message error à $self
avec en argument la constante SubclassResponsibility
, le nom de la classe de $self
et $message
.
doesNotContain et doesNotRecognize sont envoyés par l'Object Layer. notImplemented est généralement envoyé par une méthode qui n'est pas encore codée alors que subclassResponsibility est envoyé par une méthode qui doit être implémentée par une sous-classe d'une classe abstraite.
CODE
- function i_error ($self, $err) {
- $errmsg=call_user_func_array('sprintf', array_merge(array($err), array_slice(func_get_args(), 2)));
- return trigger_error($errmsg, E_USER_ERROR);
- }
- function i_doesNotContain($self, $property) {
- return \OL\object_send_message($self, 'error', array(InvalidInstanceProperty, \OL\class_name(\OL\object_class($self)), $property));
- }
- function i_doesNotRecognize($self, $message) {
- return \OL\object_send_message($self, 'error', array(InvalidInstanceMessage, \OL\class_name(\OL\object_class($self)), $message));
- }
- function i_notImplemented($self, $message) {
- return \OL\object_send_message($self, 'error', array(NotImplemented, \OL\class_name(\OL\object_class($self)), $message));
- }
- function i_subclassResponsibility($self, $message) {
- return \OL\object_send_message($self, 'error', array(SubclassResponsibility, \OL\class_name(\OL\object_class($self)), $message));
- }
error
formate le message d'erreur $errmsg
en passant $err
et le reste des arguments suivant $err
à sprintf
puis appelle trigger_error
avec en argument $errmsg
et le niveau d'erreur E_USER_ERROR
.
doesNotContain
, doesNotRecognize
, notImplemented
et subclassResponsibility
envoient le message error à $self
avec en argument la constante du message d'erreur correspondant et ses paramètres.
Commentaires