Fichiers et POO. Université Nancy 2 - L3 Miage - Initiation réseau et programmation web - Nazih Ouwayed Introduction. Les fichiers texte

Documents pareils
Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Cours 14 Les fichiers

Programmation impérative

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Les fichiers. Chapitre 4

Le système de gestion des fichiers, les entrées/sorties.

Premiers Pas en Programmation Objet : les Classes et les Objets

Stockage du fichier dans une table mysql:

Cours Informatique Master STEP

Programmation système I Les entrées/sorties

1 Lecture de fichiers

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

SYSTÈME DE GESTION DE FICHIERS

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Exonet : sauvegarde automatisée d une base de données

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Langage Java. Classe de première SI

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Mise en place d un serveur Proxy sous Ubuntu / Debian

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

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

TP1 : Initiation à Java et Eclipse

Programme Compte bancaire (code)

as Architecture des Systèmes d Information

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

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Initiation à la Programmation en Logique avec SISCtus Prolog

Programmation Web. Madalina Croitoru IUT Montpellier

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

L ARCHIVAGE LEGAL : CE QU IL FAUT SAVOIR

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Programmation système de commandes en C

Propagation sur réseau statique et dynamique

RMI le langage Java XII-1 JMF

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

AWS avancé. Surveiller votre utilisation d EC2

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Chap III : Les tableaux

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

Chapitre 2. Classes et objets

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Cours 6 : Tubes anonymes et nommés

Serveur d'archivage 2007 Installation et utilisation de la BD exist

TP3 : Manipulation et implantation de systèmes de fichiers 1

Cours de Système : Gestion de Fichiers

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

1. Structure d'un programme FORTRAN 95

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

Comment développer et intégrer un module à PhpMyLab?

Le prototype de la fonction main()

Classes et Objets en Ocaml.

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

Programmation Orientée Objet application au langage Java Version Novembre 2007

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Présentation du PL/SQL

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

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

Environnements de développement (intégrés)

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

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

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Mysql avec EasyPhp. 1 er mars 2006

Le Network File System de Sun (NFS)

Génie Logiciel avec Ada. 4 février 2013

MS SQL Express 2005 Sauvegarde des données

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Programmer en JAVA. par Tama

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Initiation à html et à la création d'un site web

PG208, Projet n 3 : Serveur HTTP évolué

SUPPORT DE COURS. Langage C

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Héritage presque multiple en Java (1/2)

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP JAVASCRIPT OMI4 TP5 SRC

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

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)

Mise en oeuvre TSM 6.1

WINDOWS SERVER 2003 Maintenance d'active directory V1.0

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Programmation en langage C Eléments de syntaxe

Tp 1 correction. Structures de données (IF2)

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

INITIATION AU LANGAGE JAVA

PHP 5.4 Développez un site web dynamique et interactif

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

TP : Gestion d une image au format PGM

TP1. Outils Java Eléments de correction

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Création d'une nouvelle base de données

Sauvegarde sous MAC avec serveur Samba

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Transcription:

UE 503 L3 MIAGE Initiation Réseau et Programmation Web Séance 05 PHP Nazih OUWAYED nazih.ouwayed@loria.fr http://www.loria.fr/~ouwayedn/ Fichiers et Année Universitaire 2010/2011 2 Introduction g Généralités De nombreuses applications travaillent avec des fichiers Les fichiers permettent de sauvegarder des données sur disque et les rendent en quelque sorte pérennes On peut les utiliser dans des sessions ultérieures Il existe de nombreuses fonctions pour les lire, les remplir, les supprimer et même changer leurs attributs Dans ce chapitre on va s intéresser aux opérations de lecture/écriture puis nous regarderons quelques opérations de leur manipulation sur disque 3 g Fichier texte PHP ne lit et n'écrit dans les fichiers que sous forme de texte Un fichier texte est un fichier caractère, construit sous un éditeur de texte Il est organisé sous la forme d une suite de lignes de caractères Le fichier est suffixé par.txt g Comment travailler sur un fichier texte? Pour travailler sur un fichier texte, il faut l ouvrir On utilise pour cela fonction fopen ici on ouvre le fichier en lecture : " r" $f=fopen("exemple.txt","r"); 4 1

r : read w: write a:apend g Les différents modes d ouverture 'r' ouvre en lecture seule : le pointeur est placé au début du fichier. 'r+' ouvre en lecture/écriture : le pointeur est placé au début du fichier. 'w' ouvre en écriture seule : le pointeur est placé au début du fichier. Réduit la taille du fichier à 0. Tentative de création si celui ci n'existe pas. 'w+' ouvre en lecture/écriture : le pointeur est placé au début du fichier. Réduit la taille du fichier à 0. Tentative de création si celui ci n'existe pas. 'a' ouvre en écriture seule : le pointeur est placé au début du fichier. Tentative de création si celui ce n'existe pas. r : read w: write a:apend g Les différents modes d ouverture 'a+' ouvre en lecture/écriture : le pointeur est placé à la fin du fichier. Tentative de création si celui ce n'existe pas. 'x' orée et ouvre le fichier en lecture seule : le pointeur est placé au début du fichier. Si le fichier existe déjà, fopen va échouer 'x+' orée et ouvre le fichier en lecture/écriture : le pointeur est placé au début du fichier. Si le fichier existe déjà, fopen va échouer 5 6 g Remarque Si la fonction fopen() échoue lors de l'ouverture du fichier, celle ci retourne 0 $f=fopen("exemple.txt","r"); if ($f==0) echo("impossible d'ouvrir le fichier!"); else echo("fichier ouvert avec succès!"); g Fermer un fichier La fonction fclose() est utilisée pour fermer un fichier fclose($f); g Écrire dans un fichier L'écriture dans un fichier texte se fait avec la fonction fwrite(). Pour faire des retours à la ligne vous devez utiliser : "\r\n" $f = 'exemple.txt'; $text = "ma chaine de caractères"; $handle = fopen($f,"w"); // Regarde si le fichier est accessible en écriture if (is_writable($f)) { // Écrit $text et vérifie if (fwrite($handle, $text) === FALSE) { echo 'Impossible d\'écrire dans le fichier '.$f.''; exit; else { echo 'Ecriture terminée'; fclose($handle); else { echo 'Impossible d\'écrire dans le fichier '.$f.''; 7 8 2

g Exemple: compter le nombre de lignes A l'aide de deux fonctions file() place le fichier dans un tableau count () compte les lignes du tableau $f = 'exemple.txt'; if(file_exists($f)) { // place le contenu du fichier dans un tableau $tab = file($f); // compte le nombre de ligne $nb = count($tab); echo $nb; // Affiche le résultat 9 g Trouver la fin d'un fichier La fonction feof() est utilisée pour tester la fin du fichier if (feof($f)) echo 'Fin du fichier'; 10 g Récupérer le contenu Nous allons nous servir de la fonction file_get_contents pour récupérer l'intégralité du fichier $contents = file_get_contents("url du fichier"); // ou avec fopen, fread, fclose $fd = fopen($url, 'r'); // Ouverture du fichier en lecture seule while(!feof($fd)) { //Récupère le contenu du fichier et le place dans une chaîne de caractères $contents.= fread($fd, 8192);//Lire 8192 octets fclose($fd); //Fermeture du fichier 11 g Comment lire caractère par caractère? Par fgetc() if (!($f=fopen("exemple.txt","r"))) exit("impossible d'ouvrir le fichier."); while (!feof($f)) { $texte=fgetc($f); echo $texte; fclose($f); 12 3

g Comment lire un fichier ligne par ligne? Par fgets() : Exemple $ressource_fichier = fopen('test.txt', 'r'); if($ressource_fichier) { $contenu_fichier = ''; //tant que l'on est pas à la fin du fichier while(!feof($ressource_fichier)) { //récupère la ligne en cours et l'ajoute au contenu de la variable $contenu_fichier.= fgets($ressource_fichier); //$contenu_fichier fclose($ressource_fichier); echo $contenu_fichier; //affiche le contenu du fichier 13 g Positionnement dans le fichier rewind() : place le pointeur au début du fichier fseek() : place le pointeur en un point du fichier ftell() : trouve la position du pointeur g Exemple : <? $fp=fopen("monfichier.txt", "rb"); //On se positionne au 42ème octet fseek($fp,42); //On récupère l'emplacement du pointeur $position=ftell($fp); // On se positionne au premier octet rewind($fp); 14 g Création fopen() touch () // touch( exemple.txt ); g Effacement Unlink() Exemple <? $fichier='fantome.txt'; if (file_exists($fichier)){ unlink($fichier); 15 g Taille de fichier $fichier='monfichier.txt'; echo $fichier. 'fait'.filesize($fichier). octets'; g Parcourir un répertoire Il s agit de parcourir un répertoire et d afficher la liste des noms de fichiers contenus : $dir=dir('.'); //le. indique le répertoire courant while($nom=$dir->read()){ echo $nom,'<br>'; $dir->close(); 16 4

g Parcourir un répertoire Utilisation de opendir(), readdir() et closedir() avec le même résultat que précédemment : <? //script affiche tous les fichiers d'un //répertoire $dir=opendir("."); while($nom=readdir($dir)){ echo $nom.'<br>'; closedir($dir); 17 g Position dans l arborescence getcwd() permet de connaître le nom du répertoire courant echo repertoire courant :.getcwd(); chdir() pour remonter dans l arborescence echo repertoire courant :.getcwd(). <br> ; chdir(.. ); echo repertoire courant :.getcwd(). <br> ; 18 g Intérêt Progrès par rapport à la version PHP4 Permet de rassembler autour d un même objet (concept), une définition, des attributs et des méthodes d action de réutiliser des objets existants en les complétant par ce qui est nouveau D où des avantages liés à : La clarté du code La modularité La réutilisabilité L interopérabilité g Création d une classe Déclarer une classe class voiture { //contenu de la classe g Le contenu de la classe est structuré en deux parties La première partie permet de déclarer les attributs et les constantes (à partir du PHP5) Les attributs sont déclarés en utilisant la syntaxe des variables et un des mots-clés suivant : public, private ou protected Les constantes sont des attributs locales à une classe La deuxième partie du contenu d une classe permet la déclaration des méthodes Ces méthodes se déclarent exactement comme des fonctions Exemple class voiture { const Vitesse = 1; public $marque= Ferrari ; function freiner($force_de_freinage){ //instructions pour faire freiner 19 20 5

g Utilisation des objets Instanciation Pour pouvoir utiliser un objet, il faut d abord le créer à partir d une classe On utilise le mot-clé : new Exemple //déclaration de la classe class voiture { public $marque; function freiner($force_de_freinage){ //instructions pour faire freiner //Instance d un objet $mavoiture = new voiture(); Les parenthèses lors de l instanciation sont ici optionnelles. Elles ne seront nécessaires que si on a des paramètres à passer pour l initialisation de l objet 21 g Utilisation d un attribut Une fois qu un objet est instancié, on peut utiliser ses attributs et ses méthodes class CompteBancaire{ public $solde=0; $mon_compte = new CompteBancaire(); echo 'Le solde de mon compte est : '; echo $mon_compte->solde, '<br>'; //Affiche 0 $mon_compte->solde = 6000; echo 'Maintenant le solde de mon compte est :'; echo $mon_compte->solde, '<br>'; //Affiche 6000 22 g Utilisation des méthodes Similaire à celle des attributs Séparer l objet et la méthode par -> class Voiture{ function klaxonne(){ echo "vous klaxonnez fort!"; $ma_voiture = new Voiture(); $ma_voiture->klaxonne(); //affiche vous klaxonnez fort! 23 g Constantes Les constantes s utilisent de manière statique On peut y faire référence de partout dans le code class TondeuseGazon{ const TRACTEE=1; const AUTOPORTEE=2; const POUSSEE=4; public $type; $matondeuse = new TondeuseGazon(); $matondeuse->type = TondeuseGazon::POUSSEE; echo $matondeuse->type; //Affiche 4 24 6

g Constructeur C est une méthode permettant d initialiser un objet à sa création La métavariable $this est Elle porte le nom : _construct() une référence permanente vers l objet courant class voiture{ public $vitesse = 0; public $marque; function affiche(){ echo 'Il s\'agit d\'une voiture de marque'; public $annee; echo $this->marque, '<br>'; public $modele; echo 'Le modèle est ', $this->modele, '<br>'; //Définition du constructeur echo 'L\'année d\'achat est ', $this->annee, '<br>'; function _construct($marque,$modele,$annee){ $ma_voiture = new $this->marque = $marque; voiture('constructeur1','coupesport',2004); $this->annee = $annee; $ma_voiture->affiche(); $this->modele = $modele; function avance($temps) { $distance = $temps * $this->vitesse; echo "Pendant des $temps heures on a avancé de $distance km"; 25 g Destructeur De manière identique, il existe un destructeur, _destruct(), appelé automatiquement quand l objet est détruit, soit par unset(), soit à la fin du script class mere{ function _destruct(){ echo "appel au destructeur de la classe mère <br/>"; class fille extends mere{ function _destruct(){ echo "appel au destructeur de la classe fille <br/>"; parent::_destruct(); $objet = new fille(); $objet ->_destruct(); 26 g Héritage g Héritage Exemple 1 class vehicule_a_moteur{ function avancer (){ echo "J'avance<br>\n"; class voiture extends vehicule_a_moteur { function passer_la_vitesse ($vitesse){ echo "Je passe la vitesse $vitesse<br>\n"; function avancer (){ $this->passer_la_vitesse(1); parent::avancer(); $mavoiture = new voiture(); $mavoiture->avancer(); //Affiche "Je passe la vitesse 1" puis "J'avance" 27 28 7

Bibliographie g Héritage Exemple 2 class vehicule_a_moteur{ public $nombre_roues = 2; class voiture extends vehicule_a_moteur { $berline = new voiture(); echo $berline->nombre_roues; //affiche 2 g A. Belaïd, Programmation web, PHP 5 g http://www.phpdebutant.org g http://php.net/ 29 30 8