X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=unix_prog_web%2Funix_prog_web_06.xhtml;fp=unix_prog_web%2Funix_prog_web_06.xhtml;h=0000000000000000000000000000000000000000;hb=8a2e36282654d761b5bee1b2832d25f27097094b;hp=ecdcfdc99c870e2750607dea4628fcb56c64c0b8;hpb=6e8bc5175a0d55e46d072fce27496d93beee3f83;p=hacks%2FsimpleWebSlides.git diff --git a/unix_prog_web/unix_prog_web_06.xhtml b/unix_prog_web/unix_prog_web_06.xhtml deleted file mode 100644 index ecdcfdc..0000000 --- a/unix_prog_web/unix_prog_web_06.xhtml +++ /dev/null @@ -1,708 +0,0 @@ - - - - - PHP : Introduction - - - - - - - - - - - - - - - - - - - - - - -
-

Unix et Programmation Web

-

Cours 6

-
kn@lri.fr
- http://www.lri.fr/~kn -
- -

Introduction et généralités

- -
-

Avant PHP

-

Constat: besoin de pages Web dynamiques (contenu - généré au chargement de la page)
- Première solution: scripts (ou programmes) CGI
- http://www.example.com/foo.cgi?sort=alpha -

-
    -
  1. Programme écrit dans n'importe quel langage et exécuté par - le serveur Web
  2. -
  3. Le serveur passe les infos au programme par - des variables d'environnement et l'entrée - standard
  4. -
  5. Le programme génère une page Web par affichage sur la - sortie standard
  6. -
-

Inconvénients

-
    -
  1. Communication difficile entre le serveur Web et le - programme
  2. -
  3. Les langages généralistes ne sont pas faits pour le - Web (pas de support d'HTML nativement par exemple)
  4. -
-
- -
-

PHP (Avantages)

- -

Exemple: fichier heure.php :

- Heure - -

L'heure

-

Il est ]]><?php echo date('H:i:s'); ?> - - ]]> -

-
-

PHP

- -
-
-

Principe

- -
- - Heure - -

L'heure

-

Il est ]]>15:53:00 - - ]]> -

-
- -
-

PHP (inconvénients)

-
  1. Génère du HTML via echo (débuggage - difficile)
  2. -
  3. Interprété : problème de performances si beaucoup de - clients
  4. -
  5. NON TYPÉ : C'est - HORRIBLE
  6. -
-

Devinette : qu'affiche l'instruction suivante ? (on ne - connaît pas encore PHP mais on peut utiliser son intuition)

- echo 013 + "013 c'est en fait 11 en base 8"; - -
-
-

Un mot sur les langages de programmation (subjectif)

-
    -
  1. Il n'y a pas d'excellent langage de programmation. Par - contre il y a d'excellents programmeurs
  2. -
  3. Connaître plusieurs langages aide à devenir un bon - programmeur (en particulier plusieurs paradigmes différents : - impératifs, objet, fonctionnel, logique, déclaratif, …). -
  4. -
  5. On ne peut pas vraiment se faire plaisir en informatique - en étant un mauvais programmeur
  6. -
  7. Il y a de très mauvais langages, le plus mauvais étant - PHP
  8. -
-
- - -

Types de base et expressions simples

-
-

Entiers (integer)

-

Les entiers ont une taille fixe (généralement 32bits) :

- - - - - -
Notation décimale10, 3444, -25, 42, - …
Notation binaire0b10, -0b10001010, - …
Notation octale0755, -01234567, …
Notation hexadécimale0x12b, -0xb00b5, - 0xd34db33f, …
-

Opérateurs arithmétiques :

- - - - -
- « Moins » unaire
+, -, *, % addition, soustraction, produit, modulo
/Division. Si - x et y sont des entiers et que y - divise x alors x/y renvoie - un entier sinon x/y renvoie - un flottant! -
-
-
-

Booléens (boolean)

- - -
TRUE/FALSEvrai/faux (en majuscules)
-

Opérateurs logiques :

- - - -
! négation (unaire)
&&, || « et » logique, « ou » logique
-
-
-

Flottants (float)

- - -
Notation scientifique1.3, 0.99, 00.34e102, -2313.2313E-23, - …
-

Opérateurs arithmétiques :

- - - - -
- « Moins » unaire
+, -, *, /, % opérations standard
abs, sin, cos, sqrt, pow, …fonctions - mathématiques pré-définies
-
-
-

Variables, affectations

- -

Exemples :

- $foo = 123; - $bar = 1323e99; - $_toto = $bar; - -
-
-

Chaînes de caractères (string)

- - - -
Simples quotes 'foo', 'c\'est - moi', 'Un antislash : \\', …
- Pas d'autre séquence d'échappement -
Doubles quotes"foo", "c'est - moi", "Un retour chariot: \n", "La variable - \$toto contient: $toto"
- Les séquences d'échapement sont: - \n, \t, \\, \", \$. Les variables (sous-chaînes - commençant par un $) sont remplacées par leur valeur. - -
-

Opérations sur les chaînes :

- - - - - -
$foo[10] accès au 11ème caractère
$foo[10] = 'A'; mise à jour
. concaténation
strlenlongueur
-
-
-

Tableaux (array)

-

Les tableaux sont des tableaux associatifs :

- - - - - - - - -
array()crée un tableau vide
array(k1 => v1, …, - kn => vn )créé un nouveau tableau pour lequel - l'entrée ki est associée à la - valeur vi -
array(v1, …, vn )créé un nouveau tableau pour lequel - l'entier i-1 - valeur vi -
-

Quelques fonctions :

- - - - - -
count taille du tableau (nombre d'éléments)
sort, rsort trie un tableau (rsort trie par - ordre décroissant) par valeurs. Les clés sont supprimées et - de nouvelles clées de 0 à longueur - 1 sont crées
ksort, krsorttrie un tableau par - clés
print_raffiche un tableau (ne pas utiliser echo)
-
-
-

Tableaux (exemples)

- $tab1 = array(); //tableau vide - $tab2 = array("zero", "un", "deux", "trois"); - $tab3 = array("pi" => 3.14159, "e" => 2.71828; "phi" => 1.61803); - echo $tab2[0]; //affiche zero - echo $tab3["phi"]; //affiche 1.61803 - $tab1["dix"] = 10; //affectation - sort($tab2); - echo $tab2[0];//affiche deux - sort($tab3); - echo $tab3[0]; //affiche 1.61803 - echo $tab3[1]; //affiche 2.71828 - echo $tab3[2]; //affiche 3.14159 - echo count($tab2); //affiche 4 -
-
-

NULL

-

NULL est une constante spéciale, de - type NULL. C'est la valeur d'une variable non déclarée - ou d'un accès invalide dans un tableau.

- $a = $b; // $b n'est pas déclarée, $a reçoit NULL - $c = $tab["toto"]; // $tab existe mais n'a pas de valeur - // associée à la clé "toto", $c reçoit NULL - -
-
-

Conversions de types

-

☠☢☣☹ : -les conversions se - font implicitement, en fonction du - contexte. -

- - - - - -
Booléen 0, 0.0, "", "0", NULL, et le tableau - vide sont convertis en FALSE, le reste - en TRUE (en particulier "00" vaut TRUE - ☹)
Entier FALSE ⇝ 0, TRUE ⇝ 1, - les flottants sont arrondis par partie entière (1.23242 ⇝ - 1). Les chaînes dont un préfixe - est un entier sont converties en cet entier, sinon en 0 ("123 - bonjour" ⇝ 123)
Chaîne La chaîne contient la représentation - de la valeur ( 1 . "ABC" - ⇝ "1ABC"). FALSE et NULL sont - convertis en "", TRUE converti en "1"
-

La réponse à la devinette : 013 + "013 c'est 11 en octal" :

- - -
-
-

Comparaisons

-

Opérateurs de comparaisons

- - - - - - - - - - -
Opérateur Description
$a == $b Égal, après conversion - de type
$a != $b Différent, après conversion - de type -
$a === $b Égal et de même type -
$a !== $b Différent ou de type différent -
$a < $b Strictement plus petit, - après conversion de type -
$a > $b Strictement plus grand, - après conversion de type -
$a <= $b Plus petit, - après conversion de type -
$a >= $b Plus grand, - après conversion de type -
-

On comparera TOUJOURS des valeurs - de MÊME TYPE

-
-
-

Affichage

-

On utilise l'instruction echo pour écrire - du texte dans la page HTML résultante :

- - - - - - - - - - - - - - - - - -
Code PHPCode HTMLAffichage dans le navigateur
echo "Hello";
- echo "World";
HelloWorldHelloWorld
echo "Hello\n";
- echo "World";
Hello
World
Hello World
echo "Hello<br/>";
- echo "World";
Hello<br/>WorldHello
World
-
-

Structures de contrôle

-
-

Conditionnelle: if else

- - if ( c ) { - // cas then - } else { - // cas else - }; - -

Les parenthèses autour de la condition c sont - obligatoires. La branche else { … } est - optionnelle. Les accolades sont optionnelles pour les blocs - d'une seule instruction

-
-
-

Boucles

-
- while ( c ) { - //corps de la boucle while - }; -
-
- - do { - //corps de la boucle do - } while ( c ); -
- -
- - for(init ; test ; incr) { - //corps de la boucle for - }; -
-
- - foreach($tab as $key => $val) { - //corps de la boucle foreach - //$tab est un tableau, $key une clé et $val la valeur associée - }; -
-

Remarque: ksort et krsort influencent - l'ordre de parcours par une boucle foreach

-
-
-

break et continue

- - - - - -
breaksort de la boucle - immédiatement
continue reprend à l'itération - suivante
- - for($i = 0; $i < 10; $i = $i + 1){ - if ($i == 2 || $i == 4) continue; - if ($i == 7) break; - echo $i . ' '; - } - -

Affiche 0 1 3 5 6

-
-

Passage de paramètres depuis une page

-
-

Formulaire HTML (version simple)

-

L'élément <form> permet de créer des formulaires HTML. Un -formulaire est constitué d'un ensemble de widgets (zones de saisies -de textes, boutons, listes déroulantes, cases à cocher, ... ) et d'un -bouton submit. Lorsque l'utilisateur appuie sur le bouton, les -données du formulaires sont envoyées au serveur. Exemple, fichier -age.html :

- - -
- Entrez votre année de naissance: - -
- - - ]]>
-
-
-

Paramètres

-

- Les paramètres envoyés au serveur web par la méthode get, sont - accessibles en PHP dans la variable globale $_GET. C'est un tableau - qui associe au nom d'un input sa valeur. - Exemple : calcul.php

- - - "; - echo date("Y") - ]]>$_GET["val_age"] ans"; - echo "
"; - ?> - - - ]]>
-
- - -

Définitions de fonctions

- -
-

Fonctions

-

Les fonctions sont déclarées à l'aide du - mot-clé function. On renvoie des résultats à - l'aide du mot-clé return.

- function double ($x) - { - return $x + $x; - } - - echo double(10); - ]]> - -
- - -
-

Portée des variables locales et globales - -

-
-
- <?php - $a = 42; - function add_a($x) - { - - return $x + $a; - } - echo add_a(10); - ?> - -
-
- <?php - $a = 42; - function add_a($x) - { - global $a; - return $x + $a; - } - echo add_a(10); - ?> - -
-
- - -

Le code de gauche affiche 10 ! - Les variables ont une portée locale - par défaut. Si $a n'est pas définie dans le corps de la - fonction, sa valeur est NULL - (variable non définie). Pour référencer - des variables globales, on utilise le mot clé global. -

-
-
-

Fonction : définition

-

On peut utiliser une fonction « avant » de la définir :

- <?php - echo next(10); - echo <br/>; - - function next($x) - { - return $x + 1; - } - ?> -

On définira toujours des fonctions avant de - les utiliser. On ne peut pas définir deux fonctions avec le même - nom. -

-
-
-

Fonctions : passage par référence

-
-
- <?php - function add_a($tab) - { - $tab["a"] = 42; - } - - $mytab = array(); - add_a($mytab); - echo $mytab["a"]; - //n'affiche rien (car NULL ⇝ "") -?> -
-
- <?php - function add_a(&$tab) - { - $tab["a"] = 42; - } - - $mytab = array(); - add_a($mytab); - echo $mytab["a"]; - //affiche 42 -?> -
- -
-
-

On utiliser le modificateur & devant - un paramètre de fonction pour indiquer que ce dernier est passé - par référence.

- -

Lorsque l'on veut modifier un argument de la - fonction (plutot que de renvoyer une version modifiée, par - ex. mise à jour d'un tableau, d'une chaîne, …), on doit le - passer par référence. -

-
- - -