Détails du sujet

PHP POO [Quiz 2] [Pile 1]

La Programmation Orienté Objet en language PHP

Toutes les cartes

Qu'est-ce que le Design Pattern Observer?

C'est un patron de conception qui nous permet de mettre sur écoute un objet afin qu'il modifie d'autres objets lors d'un événement précis.


Peut-on utiliser les closures dans le design pattern Observer?

Oui


Un peu d'humour

Quel est le plus gros ordinateur d'Apple?

Le Big Mac


Que veut dire en anglais les initiales

DIC

Dependency Injection Container


Lorsque l'on utilise Addendum pour annoter les commentaires, toute annotation à une valeur.

Les annotations sont-elles des classes?

Oui, avec Addendum, toutes les annotations sont des classes héritant d'une classe de base Annotation.

Si l'on souhaite ajouter l'annotation @Table à notre classe Personnage pour spécifier à quelle table un objet Personnage correspond, alors il faut au préalable créer une classe Table.

 


Que veut dire l'acronyme récursif

PHP

?

PHP Hypertext Preprocessor

 

Un acronyme récursif est un acronyme qui fait référence à lui même.

A l'origine PHP voulait dire Personnal Home Page.


Qu'est-ce que le language

PHP

?

C'est un language de script Open Source executé côté serveur.

Il permet, entre autre, d'écrire des pages web dynamiques.

Il s'intègre facilement dans des pages HTML.

Sa syntaxe est empruntée au languages C, Java et Perl.


Quelles sont les 3 classes qu'Addendum propose pour exploiter les annotations situées dans les commentaires?

ReflectionAnnotedClass
ReflectionAnnotedMethod
ReflectionAnnotedProperty

 

Elles étendent respectivement

  • ReflectionClass
  • ReflectionMethod
  • ReflectionProperty

Quelles recommendations de codage, tout développeur PHP est censé suivre?

Les PSR.

PHP Standards Recommendations


Quelle PSR décrit les spécifications pour l'autoloading?

PSR-4: Autoloader


Quelle PSR spécifie les règles standards d'écriture du code PHP?

PSR-1: Basic Coding Standard


La PSR-1 nous recommende-t-elle d'écrire le nom des classes en camelCase?

Non, en StudlyCaps.


La PSR-1 nous recommande-t-elle d'écrire le nom des méthodes en StudlyCase?

Non, en camelCase.


La PSR-1 nous recommande-t-elle d'utiliser seulement deux types de balises PHP?

Oui

 

<?php     ?>

 

et

 

<?=          =>

 


Déclaration du charset

Quel code doit-on parfois ajouter en haut de notre page php afin que notre texte puisse afficher correctement les accents?

header('Content-Type: text/html; charset=UTF-8');


D'Aprés la PSR-1 quel charset doit-on utiliser dans nos pages php?

UTF-8 sans BOM

BOM (Byte Order Marks)

Le BOM est la séquence de 3 bytes (0xEF,0xBB,0xBF) située en début de fichier qui indique au client que le fichier est encodé en UTF-8.

 


Quels caractères doit-on utiliser pour les constantes d'aprés la recommendation PSR-1?

L'Upper Case et des underscores pour séparer  plusieurs mots.


La recommendation PSR-1 nous recommande-t-elle un jeux de caractères pour les propriétés?

Non

On peut utiliser le StudlyCaps ou le camelCase avec ou sans l'underscore.

La seule recommendation est qu'il faut être constant une fois un modèle choisi.


D'aprés la recommendation PSR-1, à quels termes, le mot 'class' peut-il faire référence?

  • les classes
  • les interfaces
  • les traits

La recommendation PSR-4:Autoloader est-elle obsolète par rapport à la PSR-0?

Non

La PSR-0 est obsolète et la PSR-4 est à suivre.


Les Annotations avec Addendum

Expliquez le code suivant

On crée une instance de 'ReflectionAnnotedClass' en passant en argument la classe 'A' afin de pouvoir connaître la valeur de son annotation 'Table' en utilisant les méthodes 'getAnnotation' et 'value'.


Citez les 4 méthodes

en relation avec les annotations,

qui sont communes

aux 3 classes d'addendum suivantes:

 

ReflectionAnnotedClass
ReflectionAnnotedMethod
ReflectionAnnotedProperty

hasAnnotation($class)


getAnnotation($annotation)


getAnnotations()


getAllAnnotations($restriction = false)


Que renvoie la méthode getAnnotation() d'une part et la méthode value() d'autre part?

  • getAnnotation('Table') renvoie une instance de la classe Table
  • value() renvoie la valeur de l'annotation @Table. Par défaut une annotation contient une valeur, ainsi sa classe contient un attribut $value.

Comment définir un tableau de valeur 'key => value'  pour une annotation de classe?

Mettre la valeur de l'annotation entre accolades et séparer les valeurs du tableau par des virgules.


Expliquez l'annotation.

C'est une annotation à plusieurs valeurs.

On donne un nom à chaque valeur qui est séparée de la suivante par une virgule.

Chacune de ses valeurs est stockée dans un attribut de la classe représentant l'annotation.

Chaque nom d'attribut correspond au nom de chaque valeur.


Citez les différentes annotations possibles avec Addendum.


Pourquoi utiliser l'UML pour son application?

Pour modéliser son application afin de mieux s'y retrouver.

 

UML = Unified Modeling Language


UML

Quand parle-t-on d'association entre une classe A et B?

Il y a association quand une classe A se sert d'une classe B.


UML

Quand a-t-on une agrégation entre une classe A et B?

Il y a agrégation quand la classe A possède au moins un attribut qui est une instance d'une autre classe B.

 

L'Agrégation est une association particulière.


UML

Quand a-t-on une composition entre une classe A et B?

Si toutes les instances de B contenues dans A sont supprimées lorsque A est supprimée.

 

Une composition est une agrégation particulière.


UML

Expliquez les nuances entre:

  • Association
  • Agrégations
  • Composition

La Composition est une Agrégation particulière.

L'agrégation est une Association particulière.

Il y a association quand une classe A utilise une classe B.

Il y a Agrégation quand une classe A possède une ou plusieurs intances d'une classe B.

Il y a Composition quand toutes les instances de B contenues dans A sont supprimées lorsque A est supprimée.


Diagramme UML

Quel signe précède les attributs ou méthodes publiques?

+


Diagramme UML

Quel signe précède les attributs ou méthodes protégés?

#


Diagramme UML

Quel signe précède les attributs ou méthodes privés?

-


Diagramme UML

Quelle police de caractère utilise-t-on pour les méthodes Abstraites?

Italique


Diagramme UML

Quelle police de caractère utilise-t-on pour les méthodes normales, ni abstraites ni statiques?

Une police normale.


Diagramme UML

Les méthodes et attributs statiques sont-ils surlignés?

Oui


Diagramme UML

Représentez un diagramme UML entre un corps humain, un poumon, un rein et un estomac.

C'est une Composition

Diagramme UML

Quel mot précède le nom des méthodes finales dans les diagrammes UML?

<<leaf>>


Diagramme UML

Quelle est la direction et le type de flêche utilisée entre une classe fille et sa mère?

Une flêche pleine allant de la fille vers la mère.


Diagramme UML

Quel mot précède le nom d'une interface dans un diagramme UML?

<<interface>>


UML

Quelle est la direction et le type de flêche utilisée entre une classe et son interface?

Une flêche en pointillée allant de la classe vers l'interface.


Diagramme UML

Représentez le diagramme UML d'une association entre une classe NewsManager qui gère plusieurs classes News.


Diagramme UML

Représentez le diagramme UML d'une Agrégation entre une classe NewsCollection qui organise plusieurs classes News.


Diagramme UML

Représentez le diagramme UML d'une Composition entre une classe NewsCollection qui organise plusieurs classes News.


Diagramme UML

Quel est l'utilité du logiciel Dia?

  • Permet la création de diagrammes UML
  • Permet l'exportation des diagrammes en codes PHP

Une classe est-elle un modèle à partir duquel on définit un objet?

Oui

Une instance de classe est un objet.


Peut-on dire que la notion d'héritage nous permet de factoriser des traitements communs à plusieurs classes, dans une classe mère?

Oui


Qu'est ce que la SPL (Standard PHP Library)?

C'est une extention non désactivable depuis PHP 5.3 qui regroupe des fonctions, classes et interfaces trés performantes.


Quelles sont les répercutions si on modifie un attribut statique d'une classe?

La modification se répercute sur tous les objets de cette classe.