Voici un test de certification type. C’est une suite de 30 exercices à réaliser en 120 minutes. Et voici quelques conseils pour y répondre et maximiser ses chances de réussite :
- Rappelez-vous que quelque soit le résultat, vous allez avoir à la fin une appréciation de votre niveau. Et le niveau « Débutant » est déjà bien car cela vous permettra de postulez à d’autres formations plus approfondi en PHP et même des postes de développeurs web sans aucun problème.
- Prenez le temps de lire les différentes questions
- Commencez par celles qui vous semblent faciles et terminez les
- Le système vous offrira, dans certains exercices, la possibilité de tester votre solution. Profitez-en.
Voici dans ce qui suit une liste d’exercices types :
SUJET 1 : SUPPRESSION HTML
Rédigez le code de la fonction removeHtml qui reçoit en argument le paramètre $chaine.
La fonction devra retourner le paramètre en supprimant toutes les balises HTML.
Complétez le code suivant :
<?php
function removeHtml($chaine)
{
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
return $chaine
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$string = "Hi! <script src='http://www.evilsite.com/bad_script.js'></script>It's a good day!";
removeHtml($string); // La fonction devra retourner : "Hi! It's a good day!"
SUJET 2 : ALÉATOIRE
Rédigez le code de la fonction numbersBetween qui reçoit deux arguments $min et $max.
La fonction doit retourner un tableau avec les nombre compris entre $min et $max tous deux inclus.
Complétez le code suivant :
<?php
function numbersBetween($min, $max){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
numbersBetween(2,4); // La fonction numbersBetween retournera le tableau suivant : [2,3,4];
SUJET 3 : VALEUR RÉCURRENTE DANS UN TABLEAU
Rédigez le code de la fonction repeatFirstname prenant en paramètre un tableau $tab de chaînes de caractères.
La fonction devra retourner la chaîne de caractère ayant le plus d’occurrence dans le tableau $tab.
Complétez le code suivant :
<?php
function repeatFirstname($tab = []) {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$tabFirstname = array("Julien", 'Julien', "Sebastien", "Mickael", "Simon");
repeatFirstname($tabFirstname); // La fonction retournera la valeur "Julien"
SUJET 4 : EXTRACTION DES LETTRES
Complétez le code de la fonction letters afin qu’elle retourne un tableau de toutes les lettres du mot envoyé en paramètre $chaine. Les lettres devront être dans l’ordre de $chaine. Si une lettre apparaît plusieurs fois, elle apparaîtra aussi plusieurs fois dans le tableau.
Complétez le code suivant :
<?php
function numbersBetween($min, $max){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
numbersBetween(2,4); // La fonction numbersBetween retournera le tableau suivant : [2,3,4];
SUJET 5 : NAMESPACE
Complétez le code afin d’encapsuler la classe User dans l’espace de nom Foo.
Complétez le code suivant :
<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
class User {}
SUJET 6 : FACTORY
Rédigez le code de la classe TransportFactory.
Celle-ci devra comporter une méthode publique et statique create prenant en paramètre une chaîne de caractères $type.
Cette méthode devra retourner :
- une instance de la classe
Carsi$typeest égal à 1 - une instance de la classe
Motorbikesi$typeest égal à 2 falsedans tous les autres cas.
Complétez le code suivant :
<?php
class Car {}
class Motorbike {}
class TransportFactory {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 7 : VERIFICATION D’UN CODE POSTAL
Complétez le code de la fonction verificationcp qui reçoit en argument un paramètre $chaine.
La fonction devra retourner :
truesi$chainecomporte un code postal (5 chiffres pouvant aller de 0 à 9) suivi du mot clef CEDEX tel que "75002 CEDEX"falsedans tous les autres cas A noter qu’il y a un espace entre le code postal et le mot clef CEDEX écrit en majuscules.
Complétez le code suivant :
<?php
function verificationCp($chaine){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
verificationcp("75002 CEDEX"); // la fonction verificationcp devra retourner true dans cet exemple
SUJET 8 : COUPER UNE CHAÎNE EN MOTS
Complétez le code de la fonction extraction qui reçoit en argument deux paramètres $chaine et $word.
La fonction doit couper la chaîne $chaine au nombre de mots $word. Cependant, si $word est plus important que le nombre de mot dans $chaine, il faudra simplement retourner $chaine.
Le paramètre $chaine sera uniquement composé de caractères alphanumériques sans ponctuation.
Complétez le code suivant :
<?php
function extraction($chaine, $word = 50){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
echo extraction("hello world!", 1).'<BR>'; // la fonction extraction devra retourner : "hello"
echo extraction("Lorem ipsum dolor sit amet, consectetur adipiscing elit", 5).'<BR>'; // la fonction extraction devra retourner : "Lorem ipsum dolor sit amet,"
SUJET 9 : METHODE EN POO
Créez la méthode setFoo() de la class B prenant en argument une chaîne de caractères.
Celle-ci permettra d’attribuer la chaîne de caractères à la propriété $foo de la class A.
Complétez le code suivant :
<?php
class A
{
protected $foo;
}
class B extends A
{
public function getFoo()
{
return $this->foo;
}
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 10 : CONVERSION DE TYPAGE
Complétez le code de la fonction transtypage qui reçoit en argument une chaîne de caractère $chaine.
La fonction permet de convertir une chaîne de caractères en nombre entier. Elle devra retourner :
- la partie entière du nombre, si
$chaineest un nombre, 0dans tous les autres cas
Complétez le code suivant :
<?php
function transtypage($chaine){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
transtypage("Hello World!"); // La fonction retourne 0
transtypage("12.5"); // La fonction retourne 12
transtypage([12,4,8,6]); // La fonction retourne 0
SUJET 11 : IMPLÉMENTATION D’INTERFACE
Rédigez le code de la fonction hasInterface prenant en paramètre un objet $object.
La fonction doit retourner :
truesi l’objet$objectimplémente l’interfaceFoofalsedans tous les autres cas
Complétez le code suivant :
<?php
interface Foo{}
class User implements Foo {}
class Post implements Foo{}
class Message {}
class Media {}
function hasInterface($object) {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 12 : SUPPRESION DU DERNIER ÉLÉMENT
Rédigez le code de la fonction extractLastElement qui reçoit en argument le paramètre $array.
La fonction devra retourner le dernier élément du tableau $array.
Complétez le code suivant :
<?php
function extractLastElement(Array $array)
{
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$stack = array("Julien", "Ludovic", "Sebastien", "Mickael");
//exmple d'appel extractLastElement($stack); =>devra retourner "Mickael"
SUJET 13 : MÉTHODE EN POO
Complétez le code de la classe Library en y ajoutant les méthodes suivantes :
addBook(Book $book)permettant d’ajouter l’objet$bookau tableau$allBooksde la classeLibraryremoveBook(Book $book)permettant de supprimer l’objet$bookdu tableau$allBooksde la classeLibrarygetBooks()permettant de retourner le tableau$allBooksde la classeLibrary
Complétez le code suivant :
<?php
class Book {
private $title;
public function __construct($title) {
$this->title = $title;
}
public function getTitle() {
return $this->title;
}
}
class Library {
private $allBooks = [];
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 14 : LANCER UNE EXCEPTION
Compléter le code suivant afin de lancer une exception.
Complétez le code suivant :
<?php
try {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "<BR>";
}
SUJET 15 : INTERFACE EN POO
Rédigez le code d’une interface nommée InscriptionInterface.
Celle-ci devra comporter les méthodes :
getDateCreatedsetDateCreated(DateTime $datetime)
Complétez le code suivant :
<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
SUJET 16 : EXPRESSION MODULAIRE
Rédigez le code de la fonction isMultipleOf qui prend un paramètre $number.
Celle-ci devra retourner :
- 0 si
$nombren’est ni un multiple de 2 ni un multiple de 5 - 1 si
$nombreest un multiple de 2 - 2 si
$nombreest un multiple de 5 - 3 si
$nombreest un multiple à la fois de 2 et de 5
Complétez le code suivant :
<?php
function isMultipleOf($number) {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isMultipleOf(2); //la fonction doit retourner 1
SUJET 17 : FUSIONNER DES CHAÎNES DE CARACTÈRE
Complétez le code de la fonction fusionner qui reçoit en argument deux paramètres : $word et $otherWord.
La fonction concatène les deux paramètres en une seule chaîne de caractères où les deux paramètres sont séparés par un espace.
Complétez le code suivant :
<?php
function fusionner($word, $otherWord){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
echo fusionner('Hello', 'world!').'<br>';
SUJET 18 : EXISTENCE D’UNE CLEF
Compléter le code de la fonction existence prenant un tableau $array et une clef $key en paramètre.
La fonction devra retourner :
truesi la clef$keyexiste dans le tableau$arrayfalsedans tous les autres cas
Complétez le code suivant :
<?php
function existence($array = [], $key = ""){
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
existence(["fruit" => "banana", "color" => "green", "thing" => "spoon"], "fruit"); // return "true"
SUJET 19 : TRAITEMENT ET FONCTION DE TABLEAU
Compléter le code de la fonction switchPlaceOfElement qui reçoit en argument le tableau $tab.
La fonction devra retourner le tableau en modifiant la position des éléments. Le premier élément devra prendre la place du dernier et inversement.
Complétez le code suivant :
<?php
function switchPlaceOfElement($tab)
{
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
switchPlaceOfElement(["PHP", "JS", "CSS", "HTML"]); // le tableau retourné devra avoir la forme suivante : ["HTML", "JS", "CSS", "PHP"]
SUJET 20 : MÉTHODE EN POO
Compléter le code de la classe User en y ajoutant la méthode getProperties.
Celle-ci devra retourner un tableau associatif contenant les noms des propriétés de la classe User en clé et les valeurs associées aux propriétés comme valeur des clés.
Les propriétés de la classe User ont volontairement été masquées.
Complétez le code suivant :
<?php
class User {
public function __construct($firstname, $lastname) {
$this->firstname = $firstname;
$this->lastname = $lastname;
}
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 21 : CRYPTER UN MOT DE PASSE
Complétez le code de la fonction crypter qui reçoit en argument deux paramètres $password et $salt.
Celle-ci permet de retourner un mot de passe hashé :
$passwordsera hashé grâce à l’algorithme SHA512$saltsera hashé grâce à l’algorithme SHA1- Le tout sera concaténé et retourné
Complétez le code suivant :
<?php
function crypter($password, $salt) {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
crypter('azerty', 'abcdefghijklmnopqrstuvwxyz0123456789');
SUJET 22 : EXISTENCE D’UN ELEMENT DANS UN TABLEAU
Compléter le code de la fonction blockIp qui reçoit deux arguments $ip et $blacklist
Celle-ci devra retourner :
truesi l’ip$ipest contenue dans le tableau$blacklistfalsedans tous les autres cas
Complétez le code suivant :
<?php
function blockIp($ip, $blacklist) {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
blockIp('127.0.0.1', ["192.168.0.0.1", "127.0.0.1"]); // La fonction 'blockIp()' devra retourner true
SUJET 23 : DESIGN PATTERN SINGLETON
Rédigez le code de la classe Single en ajoutant une méthode publique et statique getInstance.
Vous devez implémenter le design pattern Singleton. La méthode getInstance devra donc toujours retourner la même instance de la classe Single.
Complétez le code suivant :
<?php
class Single {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
SUJET 24 : VÉRIFIER L’EXISTENCE D’UNE CONSTANTE
Compléter le code de la fonction isContant ayant une chaîne de caractères $var en paramètre.
La fonction devra retourner :
truesi$varest une constante définiefalsedans tous les autres cas
Complétez le code suivant :
<?php
function isContant($var = "") {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isContant('FOO');
SUJET 25 : TRIER UN TABLEAU SUR UNE COLONNE
Rédigez le code de la fonction sortByAverage prenant en paramètre un tableau $tab.
La fonction devra retourner le tableau $tab trié sur la colonne average du plus grand au plus petit.
Complétez le code suivant :
<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//Do not change the function "sortByAverage" below
function sortByAverage($tab = []) {
}
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
$records =
[
[
'firstname' => 'Boyer',
'average' => 10
],
[
'firstname' => 'Ludovic',
'average' => 15
],
[
'firstname' => 'Thomas',
'average' => 5
],
];
sortByAverage($records);
SUJET 26 : HÉRITAGE POO
Rédigez le code de la classe B héritant de la classe A.
Réécrivez la méthode printPHP de la classe A dans la classe B afin de retourner : "My father says : [contenu du print de A]". Vous devez utiliser le contenu
de la méthode printPHP de la classe A afin d’écrire cette nouvelle phrase.
Complétez le code suivant :
<?php
class A
{
public static $text = "PHP";
public function printPHP()
{
return self::$text.' is good';
}
}
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
SUJET 27 : CONVERSION CHAINE EN FLOAT
Rédigez le code de la fonction conversionToFloat prenant en paramètre la variable $chaine.
La fonction devra retourner $chaine converti en float
Complétez le code suivant :
<?php
function conversionToFloat($chaine = "") {
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
conversionToFloat("12.5"); //return 12.5
conversionToFloat("lorem"); //return 0
SUJET 28 : ENCODAGE JSON
Rédigez le code de la fonction jsonEncodeArray qui reçoit en argument le paramètre $array.
La fonction devra retourner le tableau au format JSON.
Complétez le code suivant :
<?php
function jsonEncodeArray(Array $array)
{
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$myvar = array(
'hello',
42,
array(1,'two'),
'apple',
rand(),
[rand(),rand(),rand(),rand(),rand()]
);
SUJET 29 : VÉRIFICATION D’UN TWEET
Complétez le code de la fonction isATweet() qui reçoit en argument $chaine.
La fonction analyse si la chaîne de caractères est un Tweet. Elle devra retourner :
truesi le tweet contient moins de 140 caractères et qu’il inclut au moins un hashtag(#) ou une mention de compte(@).falsedans tous les autres cas.
Complétez le code suivant :
<?php
function isATweet($chaine)
{
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isATweet("Php is so cool #certification"); // isATweet devra retourner "true" dans cet exemple
SUJET 30 : TYPAGE – CRÉATION FONCTION
Rédigez le code de la fonction displayInfo. Celle-ci prendra deux arguments dans l’ordre ci-dessous :
- Un tableau
- Un objet de la classe
Exception
Complétez le code suivant :
<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


Soyez le premier à commenter