Programmation Orienté Objet en language PHP
Dans quelle méthode magique place-t-on exit() afin d'empécher l'execution du code qui suit.
__destruct
void __destruct ( void )
Quel est le nom du nouvel ordinateur qu'Apple vient de sortir pour les fonctionnaires?
L' A-mac
(hamac)
Quelle méthode magique nous permet de créer dynamiquement des attributs (propriétés) qui seront traités par des méthodes magiques?
__set
public void __set ( string $name , mixed $value )
Quelle méthode magique nous permet d'utiliser dynamiquement des attributs (propriétés) qui seront traités par des méthodes magiques?
__get
public mixed __get ( string $name )
Quelle méthode magique nous permet de créer dynamiquement des méthodes?
__call
public mixed __call ( string $name , array $arguments )
Quelle méthode magique nous permet de créer dynamiquement des méthodes statiques?
__callStatic
public static mixed __callStatic ( string $name , array $arguments )
Quelle méthode magique utilise-t-on pour:
?
__sleep
public array __sleep ( void )
Quelle méthode magique utilise-t-on pour:
?
__wakeup
void __wakeup ( void )
Quelle méthode magique nous permet de faire un echo sur un objet afin d'afficher un attribut de notre choix.
echo $objet;
__toString
public string __toString ( void )
Quelle méthode magique utilise-t-on dans l'exportation d'une classe?
__set__state
static object __set_state ( array $properties )
A toute annotation correspond-t-il une valeur?
Exemple: "personnages" est la valeur de l'annotation Table
Oui
Notre IDE utilise-t-il les annotations pour l'auto-complétion?
Oui
Que permet de faire l'outil "phpDocumentor"?
De créer une documentation à partir de notre code annoté.
Certains Frameworks de tests utilisent-ils les annotations pour "automatiser" une partie des tests?
Oui
Dans l'inversion de contrôle et l'injection de dépendance, les annotations peuvent-elles être utilisées pour définir précisement les conditions d'appel d'une méthode, les données à y injecter etc... ?
Oui
Les annotations peuvent-elles fournir des informations pour réaliser le "mapping" entre une classe PHP et un objet externe?
Oui
Par exemple dans le cadre d'un ORM ( Object Relational Mapping)
ou
Pour optimiser la sérialisation / déserialisation
ou
La persistance d'objet
Ecrivez quelques lignes de code, qui vous permettront de faire de l'autoload de classes en utilisant:
Quel sont les 2 synonymes francais des closures?
Pourquoi une fonction est-elle anonyme?
Parcequ'elle ne possède pas de nom et que l'on trouve à la place du nom les instructions définissant la fonction.
Ecrire une fonction anonyme qui affiche "Hello Word"
Attention, ne pas oublier le point virgule à la fin
Pour qu'elle utilité principale utilise-t-on les closures?
Dans les callback.
Quel est le synonyme anglais d'une fonction de rappel?
Callback
Quelle est la méthode magique de la classe Closure que l'on ne peut pas modifier?
__invoke
Pour qu'elle utilité principale utilise-t-on les fonctions anonymes?
Dans les fonctions de rappel.
Les fonctions anonymes peuvent-elles être aussi utilisées comme valeurs de variables?
Oui
Peut-on utiliser les closures comme valeurs de variables?
Oui
Quand on écrit une fonction anonyme, en quoi PHP va-t-il automatiquement la transformer?
En objet Closure.
PHP possède une classe Closure, dont ses méthodes permettront de controler la fonction anonyme aprés sa création.
Quelles sont les 5 méthodes de la classe Closure?
Quel type affichera le var_dump($a) de la ligne 6?
objet(Closure)
En effet, PHP a automatiquement crée une instance de la classe Closure.
La classe closure peut-elle être instanciée avec new afin d'obtenir un objet?
Non.
Car son constructeur n'a pas été défini publique.
Seul l'écriture d'une méthode anonyme crée un objet Closure.
Quel code doit-on ajouter à la fin, pour executer la closure suivante?
$a();
Quel mot de 3 lettres permet à une closure d'importer une variable externe?
A quoi une closure peut-elle être liée?
Qu'est-ce qu'une fonction de rappel aussi appelée callback?
C'est une fonction demandée par d'autres fonctions pour effectuer des tâches spécifiques.
Pourquoi peut-on écrire $a() sans générer un message d'erreur?
Car on appel l'objet Closure $a comme une fonction $a() et cela déclenche la méthode __invoke de la classe Closure qui execute la fonction.
Qu'est ce que Pimple?
C'est un container d'injection de dépendance trés simple.
Que fait la méthode php array_map()?
array array_map ( callable $callback , array $array1 [, array $... ] )
Elle applique une fonction sur chaque élément du tableau.
Que fait le code suivant?
On incrémente de 1 chaque chiffre du tableau $liste.
Que fait le code suivant?
Ajoute 5 à chaque chiffre de la liste $liste.
Quel caractère ne faut-il pas oublier à la fin d'une closure?
Le point virgule
Changer en ligne 8 la variable $message aprés la création de la closure, changera-t-il le message affiché en ligne 9?
Non car la variable a été importée dans la closure dés sa création.
Ainsi parler() en ligne 9 affichera toujours "bonjour"
Une closure peut-elle être renvoyée comme valeur de retour d'une fonction?
Oui
On dit qu'elle est passée vers le haut
Une closure peut-elle être passée comme argument d'une fonction?
Oui
On dit qu'elle est passée vers le bas.
Peut-on dire qu'une closure est une classe appelable à laquelle on peut lier nos paramètres manuellement?
Oui
Il ajoute Mme devant les prénoms de femmes et Mr devant les prénoms d'hommes.
On lie une closure à un objet afin d'incrémenter son attribut privé.
Ainsi 21 devient la valeur de l'attribut privé de l'objet $johan.
Depuis PHP 7, quelle méthode de la classe Closure permet de lier temporairement une closure à un objet?
Que faut-il faire pour qu'une closure ne puisse être liée qu'à une classe et pas à un objet?
Que faut-il faire si on déclare une closure dans la partie globale du scripte, c'est à dire à l'extèrieur d'une méthode de classe?
Il faut manuellement lier la closure aux objets ou classes souhaitées.
Est-il vrai que si l'on déclare une closure dans une méthode non statique d'une classe,
alors la closure:
et
?