Détails du sujet

PHP POO [Quiz 1] [Pile 5]

Programmation Orienté Objet en language PHP

Toutes les cartes

Dans quelle méthode magique place-t-on exit() afin d'empécher l'execution du code qui suit.

__destruct

 

void __destruct ( void )


Un peu d'humour

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:

 

  1. Valider les données en attente pour ensuite les sauver
  2. Effectuer des opérations de nettoyage de l'objet
  3. Sauver une partie d'un trés grand objet

?

__sleep

 

public array __sleep ( void )


Quelle méthode magique utilise-t-on pour:

 

  1. Reconstruire toutes les resources d'un objet
  2. Rétablir toutes les connexions aux bdds
  3. Recréer les variables qui n'ont pas été sauvées

?

 

__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:

  • La fonction chargerClasse() qui "require" une classe passée en arguement.
  • La fonction spl_autoload_register()

Quel sont les 2 synonymes francais des closures?

  • Fonctions anonymes
  • Fermetures

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"

  • <?php
  • function()
  • {
  •    echo '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?

  • __construct
  • bind
  • bindTo
  • call
  • __invoke

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?

Le mot use

A quoi une closure peut-elle être liée?

  • Un objet
  • Une Classe

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?

Utilisation d'une closure.

On incrémente de 1 chaque chiffre du tableau $liste.


Que fait le code suivant?

Utilisation d'une closure.

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


Que fait le code suivant?
Utilisation d'une closure

Il ajoute Mme devant les prénoms de femmes et Mr devant les prénoms d'hommes.


Que fait le code suivant?
Utilisation de closure

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?

La méthode call()

Que faut-il faire pour qu'une closure ne puisse être liée qu'à une classe et pas à un objet?

Déclarer une closure statique

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:

  • Adopte le contexte de la méthode

et

  • Est liée à l'objet

?

Vrai