CM1 : PHP Mickaël Martin Nevot

Documents pareils

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation Web. Madalina Croitoru IUT Montpellier

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction au langage C

Java Licence Professionnelle CISII,

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Notions fondamentales du langage C# Version 1.0

Cours Informatique Master STEP

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

as Architecture des Systèmes d Information

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Programmer en JAVA. par Tama

INF 321 : mémento de la syntaxe de Java

Module http MMS AllMySMS.com Manuel d intégration

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Introduction à MATLAB R

Programmation Internet Cours 4

OCL - Object Constraint Language

Dans l'article précédent, vous avez appris

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TP 1. Prise en main du langage Python

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Programme Compte bancaire (code)

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Programmation C++ (débutant)/instructions for, while et do...while

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

SUPPORT DE COURS. Langage C

ALGORITHMIQUE ET PROGRAMMATION En C

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

Claude Delannoy. 3 e édition C++

Le langage C. Introduction, guide de reference

Programmation en langage C

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

1. Structure d'un programme FORTRAN 95

1/ Présentation de SQL Server :

Cours d Algorithmique et de Langage C v 3.0

SII Stage d informatique pour l ingénieur

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

PHP 5. La base de données MySql. A. Belaïd 1

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Langage Éric Guérin 5 octobre 2010

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Initiation à la programmation en Python

BES WEBDEVELOPER ACTIVITÉ RÔLE

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Vade mecum installation et configuration d une machine virtuelle V5.1.0

Conventions d écriture et outils de mise au point

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Petite définition : Présentation :

UE Programmation Impérative Licence 2ème Année

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

DOM - Document Object Model

Programmation en Java IUT GEII (MC-II1) 1

Recherche dans un tableau

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Analyse de sécurité de logiciels système par typage statique

Stockage du fichier dans une table mysql:

PHP 5.4 Développez un site web dynamique et interactif

Introduction à l algorithmique et à la programmation M1102 CM n 3

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

ECLIPSE ET PDT (Php development tools)

Rappels Entrées -Sorties

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Utilisation d objets : String et ArrayList

AWS avancé. Surveiller votre utilisation d EC2

Formation : WEbMaster

les techniques d'extraction, les formulaires et intégration dans un site WEB

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

INITIATION A LA PROGRAMMATION

TP1. Outils Java Eléments de correction

Présentation du langage et premières fonctions

Bases de programmation. Cours 5. Structurer les données

STAGE IREM 0- Premiers pas en Python

I. Introduction aux fonctions : les fonctions standards

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Les outils de création de sites web

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Programmation C. J.-F. Lalande. 15 novembre 2012

Transcription:

CM1 : PHP Mickaël Martin Nevot 03/04/2016 00:03 Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d'utilisation Commerciale - Partage à l'identique 3.0 non transposé.

I. Présentation du cours II. PHP III. PHP «intermédiaire» IV. POO V. PHP «avancé» Programmation Web côté serveur Mickaël Martin Nevot 1/36

Notions générales Opérateurs Données : Variables attributs Constantes Valeurs littérales ("hello!", 3, 2.75, true) Expressions (et expressions «parenthésées») Affectation condition Instructions Fonction procédure méthode (signature) Paramètres (formels) arguments (paramètres effectifs) Exécution séquentielle Programmation Web côté serveur Mickaël Martin Nevot 2/36

Rappel : Web 4 Base de données 3 Échange de données PHP / Base de données 7 6 Interprétation HTML/CSS par le navigateur Exécution JavaScript Client 1 5 Page HTML Internet Requête HTTP 2 Exécution PHP Serveur Programmation Web côté serveur Mickaël Martin Nevot 3/36

PHP/PHP 5 Historique : 1994-1995 : PHP par Rasmus Lerdorf 2004 : PHP version 5 2015 : PHP version 7 Principales caractéristiques : Langage de programmation de script interprété Conçu pour le développement d'applications Web Exécuté côté serveur (code non accessible côté client) Génération de pages Web dynamiques Possibilité d être couplé à une base de données Langage objet faiblement typé Open source Programmation Web côté serveur Mickaël Martin Nevot 4/36

Utilisation Fichier texte avec l extension :.php Script PHP : langage PHP et/ou langage HTML Balise <?php?> : <?php instruction_1 instruction_2?> Programmation Web côté serveur Mickaël Martin Nevot 5/36

Commentaires Non interprétés Commentaires de type C/C++ et shell Unix Exemples : // Commentaire PHP (une seule ligne complète). # Autre commentaire PHP (une seule ligne complète, déprécié). /* Autre commentaire PHP (une ou plusieurs lignes). */ /* */ Commentaire PHP (sur plusieurs lignes). Programmation Web côté serveur Mickaël Martin Nevot 6/36

Définition de type Pas de déclaration explicite du type d'une variable Le type d'une variable est déterminé par le contexte d'utilisation Conversion automatique Programmation Web côté serveur Mickaël Martin Nevot 7/36

Variables Représentées par un signe dollar $ suivi du nom de la variable : $x Sensibles à la casse : $x est différent de $X Affectation : Simple : $a = 10; $b = $a; Par référence : $a = 10; $b = &$a; // Ici, $a et $b pointent sur le même contenu. Destruction : unset($var) Programmation Web côté serveur Mickaël Martin Nevot 8/36

La valeur NULL La valeur spéciale NULL représente l'absence de valeur Une variable considérée comme NULL n'a pas de valeur Une variable est considérée comme NULL si : On lui a affecté la constante NULL Aucune valeur ne lui a été attribuée Programmation Web côté serveur Mickaël Martin Nevot 9/36

Les types Types scalaires (simples) : Booléen Entier Nombre décimal Chaîne de caractères Types composés : Tableau Objet Programmation Web côté serveur Mickaël Martin Nevot 10/36

Booléen Peut prendre la valeur true ou false Valeurs considérées comme fausses : Le booléen false lui-même L'entier 0 Le nombre décimal 0.0 La chaîne de caractères vide et la chaîne de caractères "0" Le tableau vide La valeur spéciale NULL Toutes les autres valeurs sont considérées comme true Opérateurs de conversion : (bool), (boolean) A cause de la définition de type Programmation Web côté serveur Mickaël Martin Nevot 11/36

Entier Un type entier est un entier naturel Les entiers peuvent être spécifiés en base 10, 8 ou 16 Les entiers peuvent être optionnellement précédés par le signe plus ou moins (+ ou -) : $a = 1234; // Nombre entier en base 10. $a = -123; // Nombre entier négatif. $a = 0123; // Nombre entier en base 8, octale (83 en base 10). $a = 0x12; // Nombre entier en base 16, hexadécimale (18 en base 10). Conversion : Opérateurs de conversion : (int), (integer), intval() Lors de la conversion entre un nombre décimal et un entier, le nombre sera arrondi : À la valeur inférieure s'il est positif, à la supérieure s'il est négatif Programmation Web côté serveur Mickaël Martin Nevot 12/36

Nombres décimaux Aussi appelés : Double Float Nombres réels : $a = 1.234; $b = 1.2e3; $c = 7E-10; Conversion en nombre décimal : Opérateurs de conversion : (real), (double) et (float) Fonctions floatval() et doubleval() Programmation Web côté serveur Mickaël Martin Nevot 13/36

Chaîne de caractères Séquence de caractères Une chaîne peut être spécifiée de trois manières : Guillemets doubles " Guillemets simples ' Syntaxe heredoc (plus de détails : documentation PHP) : $a = "hello world"; $b = '$a : '; $c = <<<EOT Hello world EOT; Programmation Web côté serveur Mickaël Martin Nevot 14/36

Chaîne de caractères Guillemets doubles / syntaxe heredoc : Variables présentes dans la chaîne évaluées Caractères spéciaux pris en compte : Nouvelle ligne : \n Retour à la ligne : \r Tabulation horizontale : \t Antislash : \\ Caractère $ : \$ Guillemets doubles : \" Guillemets simples : Variables présentes dans la chaîne non évaluées Caractère spécial pris en compte : \' guillemet simple Programmation Web côté serveur Mickaël Martin Nevot 15/36

Tableau Syntaxe : // array(clef => valeur,...) // clef ne peut être que : // - entier (tableau indexé) ; // - chaîne de caractères (tableau associatif). // Valeur peut être de n'importe quel type. $arr = array('foo' => 'bar', 12 => true); echo $arr['foo']; // bar echo $arr[12]; // 1 Programmation Web côté serveur Mickaël Martin Nevot 16/36

Tableau Syntaxe (création/modification avec des crochets) : // $arr[clef] = valeur; // $arr[] = valeur; // clef peut être un entier ou une chaîne de caractères. // valeur peut être n'importe quel type. $arr = array(5 => 1, 12 => 2); $arr[] = 56; // Identique à $arr[13] = 56; à cet endroit du script. $arr['x'] = 42; // Ceci ajoute un nouvel élément au // tableau avec la clef 'x'. Fonction count() : count($arr); // Retourne le nombre d éléments du tableau. Fonction unset() : unset($arr[5]); // Ceci efface un élément du tableau. unset($arr); // Ceci efface tout le tableau. Programmation Web côté serveur Mickaël Martin Nevot 17/36

Objet Instancié avec new : class Foo function do_foo($a) return $a / 2; $bar = new Foo(); $b = $bar->do_foo(2); Opérateurs de conversion : (object) Conversion en un tableau : les propriétés sont les clefs Conversion dans un autre type : membre scalar $obj = (object) 'hello'; echo $obj->scalar; // Affiche : hello. Programmation Web côté serveur Mickaël Martin Nevot 18/36

Constante Ni modifiable, ni effaçable Ne commence pas par un $ Par convention : écrite en majuscule Accessible globalement Valeur scalaire uniquement Définie par define() : define('foo', 'something'); // Valide. define('2foo', 'something'); // Invalide. define(' FOO ', 'something'); // A éviter (à cause de... ). Programmation Web côté serveur Mickaël Martin Nevot 19/36

Variables prédéfinies Variables prédéfinies «superglobales» : $GLOBALS : toutes les variables du contexte global $_SERVER : variables serveur et d exécution $_GET : HTTP GET $_POST : HTTP POST $_SESSION : variables de session $_COOKIE : cookies HTTP $_FILE : fichier chargé Variables globales et configuration : phpinfo() Programmation Web côté serveur Mickaël Martin Nevot 20/36

Opérateurs 1/2 Unaires Signes : +, - Négation :! Incrémentation/décrémentation (pré et post) : ++, -- Conversion : (int), (bool), etc. Clonage : clone Contrôle d erreur : @ $a = -0.5; --$a; $b = (bool) $a; $c =!$b; Programmation Web côté serveur Mickaël Martin Nevot 21/36

Opérateurs 2/2 Binaires Arithmétiques : +, -, *, /, % Concaténation de chaîne :. Affectations : =, +=,.=, *=, etc. Comparaisons : ==, >, >=, <,!=, <>, ===,!==, etc. Logiques : &&,, xor, etc. Binaires : &,, ~, ^, <<, >> $a = 5; $b = 10; $c = '$a : '. $a; // Pas de caractère '+'! $d = ($a == $b) && ((0!= $b % $a) ($b < 20)); Programmation Web côté serveur Mickaël Martin Nevot 22/36

Structures conditionnelles Structure conditionnelle : Branchement conditionnel : if (0 == $a) ++$a; else if (1 == $a) else --$a; $a = 0; switch($i) case 'Jambon' : echo 'Salé'; break; case 'Tarte' : case 'Bonbon' : echo 'Sucré'; break; default : echo 'Autre'; Programmation Web côté serveur Mickaël Martin Nevot 23/36

Boucles Boucle for : for ($i = 0 ; $i < 10 ; ++$i) echo $i; Boucle foreach : $arr = array(1, 2, 3, 4, 5); foreach ($arr as $key => &$val) $val *= 2; // $arr = (2, 4, 6, 8, 10). Boucle while : while($i < 5) ++$i; Boucle do while : do --$i; while ($i > 0); De 0 à n fois De 1 à n fois Programmation Web côté serveur Mickaël Martin Nevot 24/36

Break/continue Break Continue Sortir d une boucle ou d un branchement conditionnel : while(1) if (10 == $i) ++$i; break; // Exemple de break dans un // switch sur la diapositive // de structures conditionnelles. «Sauter» à l itération suivante d une boucle : $a = 0; for ($i = 0 ; $i < 10 ; ++$i) //? if (0 == $i % 2) continue; $a += $i; Programmation Web côté serveur Mickaël Martin Nevot 25/36

Fonctions function foo($a, $b, $c = 2) // Rappel : $a, $b et $c sont des paramètres. // = 2 : valeur par défaut (uniquement de type scalaire). // Un paramètre par défaut est optionnel. ++$a; --$b; // Termine la fonction en retournant la valeur calculée. return ($a * $b) / $c; // Le code éventuellement placé ici n est pas exécuté. $a = 5; $b = foo(3, $a); // Rappel : 3 et $a sont des arguments. // $a = 5. // $b = 8. Programmation Web côté serveur Mickaël Martin Nevot 26/36

Portée des variables Globale : définie dans un script PHP Locale : définie dans une fonction $a = 1; // Portée globale. function test() echo $a; // Portée locale : rien n'est affiché à l'écran. test(); Statique : function compteur() static $a = 0; // Prend une valeur scalaire, pas une expression. // Qu affiche cet echo au cinquième appel de la fonction compteur? echo $a; ++$a; Programmation Web côté serveur Mickaël Martin Nevot 27/36

Instruction Se termine par un ; Types d instruction : Déclaration : $a; Affectation : $a = 10; Appel de fonction : myfunction(); Instruction conditionnelle : if ($a == $b) ; Instruction vide : ; Bloc (d instructions) : instruction_1 instruction_2 Programmation Web côté serveur Mickaël Martin Nevot 28/36

Inclusion de fichiers Inclut et exécute un fichier PHP en remplacement de l instruction : include/require include_once/require_once : comme leur version sans le suffixe «_once» mais suppriment l instruction sans remplacement si le fichier a déjà été inclus Seule différence entre include et require : la manière dont les erreurs sont produites : include : produit une simple alerte require : produit une erreur fatale Programmation Web côté serveur Mickaël Martin Nevot 29/36

Exemple Solution 1 («totalement PHP») : <?php $arr = array(1, 2, 3, 4, 5); echo '<table><tr>'; for ($i = 0 ; $i < 5 ; ++$i) // PHP_EOL : retour à la ligne dans le code source (pas dans la page Web) echo PHP_EOL. ' <td>'. $arr[$i]. '</td>'; echo PHP_EOL. '</tr></table>';?> Solution 2 (mixte) : <table><tr> <?php $arr = array(1, 2, 3, 4, 5); for ($i = 0 ; $i < 5 ; ++$i)?> <td><?php echo $arr[$i];?></td> <?php?> </tr></table> Les solutions sont équivalentes Programmation Web côté serveur Mickaël Martin Nevot 30/36

XML Extensible markup language (langage balisé extensible) Langage de balisage (XHTML est une application de XML) Format de données textuelles (et de fichiers) Extension de fichier :.xml En-tête : <?xml version="1.0" encoding="utf-8" standalone="no"?> DTD (facultatif) : <!DOCTYPE note SYSTEM "Note.dtd"> «Infinité» d espace de nom <tag1> <tag2> <tag3>val1</tag3> <tag4>val2</tag4> </tag2> </tag1> Sert donc à la fois au stockage et au transfert de données Programmation Web côté serveur Mickaël Martin Nevot 31/36

PHP et XML SimpleXML : $xml = new SimpleXMLElement('file.xml', NULL, true); $nodes = $xml->xpath('//tag1/tag2'); foreach($nodes as $ua) // Attention, l'appel est sensible à la casse! echo $ua->tag3. PHP_EOL; Le plus souvent la méthode la plus rapide Il en existe d autres : XMLReader, DOMDocument, etc. Programmation Web côté serveur Mickaël Martin Nevot 32/36

Manuel PHP De préférence, en anglais http://www.php.net Programmation Web côté serveur Mickaël Martin Nevot 33/36

Convention de codage Convention de codage : http://pear.php.net/manual/fr/standards.php Style d écriture de code : http://www.php-fig.org/psr/ https://tommcfarlin.com/what-is-psr/ Programmation Web côté serveur Mickaël Martin Nevot 34/36

Liens Documents électroniques : http://php.net/manual http://www.manuelphp.com http://php.developpez.com/cours http://www.vulgarisationinformatique.com/variables-predefinies.php http://code18.blogspot.fr/2009/05/3-facons-delire-du-xml-en-php.html Document classique : Ilia Alshanetsky. Introducing PHP 5.4. Programmation Web côté serveur Mickaël Martin Nevot 35/36

Crédits Auteur Mickaël Martin Nevot mmartin.nevot@gmail.com Relecteurs Christophe Delagarde (christophe.delagarde@univ-amu.fr) Carte de visite électronique Pierre-Alexis de Solminihac (pa@solminihac.fr) Cours en ligne sur : www.mickael-martin-nevot.com Programmation Web côté serveur Mickaël Martin Nevot 36/36