Fichiers et Programmation réseau
Fonctions du systeme de fichiers
Dossiers
Il n’existe que deux fonctions pour manipuler des dossiers : mkdir et rmdir
Fichiers
Il existe deux types de fonctions pour travailler avec des fichiers. Les fonctions qui travaillent directement sur les fichiers et les fonctions qui travaillent sur des ressources.
Pour les ressources, l’interpréteur PHP délegue la gestion du fichier à un programme tiers tel que MySQL, GD etc.
| Fonctions qui travaillent sur les fichiers (file://) | Fonctions qui travaillent sur des ressources |
| file_get_contents | |
| file_put_contents | |
| file | |
| readfile | |
| copy | |
| rename | |
| unlink |
Attention :
$a = array( 'abc', '124a'=>'a', 'bcd' ); file_put_contents('c:/test.txt',$a);
Le fichier contiendra uniquement ‘abcabcd’
Les Meta Informations
Les meta informations sont des infos qui ne font pas partie du contenu. Par exemple, la taille, l’emplacement sont des meta informations qui décrivent un fichier
Les fonctions se rapportant aux meta informations :
- is_dir
- is_executable
- is_file
- is_link (UNIX)
- is_* (de manière générale)
- file* (de manière générale)
ATTENTION : Certaines meta données sont stockées en cache par PHP, pour vider le cache, on devra utiliser clearstatcache
Les gestionnaires
List of Supported Protocols/Wrappers
Les gestionnaires permettent d’écrire et lire des fichier. Par défaut, le gestionnaire de PHP est file://. Il existe aussi d’autres gestionnaires plus ou moins connus : ftp://, http://, tcp://, api stream, compress.zlib…
Les gestionnaires
List of Supported Protocols/Wrappers
Les gestionnaires permettent d’écrire et lire des fichier. Par défaut, le gestionnaire de PHP est file://. Il existe aussi d’autres gestionnaires plus ou moins connus : ftp://, http://, tcp://, api stream, compress.zlib…
Créer son propre gestionnaire
Il est possible d’utiliser sont propre gestionnaire de flux en utilisant une classe : voir l’exemple ici. En utilisant la fonction stream_wrapper_register, on pourra utiliser notre nouveau gestionnaire du type mon_gestionnaire://
Les filtres prédéfinis sur les flux
Les filtres prédéfinis sont des traitements effectués directement sur les flux. Par exemple, si on veut mettre en majuscule tout les caracteres d’un flux, on utilisera string.toupper. La liste des filtres se trouve ICI
On applique les filtres grace à la fonction stream_filter_append et stream_filter_prepend.
On peut supprimer ses filtres grâce à la fonction stream_filter_remove, dans laquelle on passe le filtre (variable retournée par stream_filter_append ou stream_filter_prepend)
On peut également créer nos propres filtres personnalisés
Création de filtre prédéfinis
Pour transformer un flux directement en amont d’une écriture par exemple, on pourra créer nos propres traitements sous formes de classes dérivées de php_user_filter. Il suffira d’enregistrer cette clase en tant que filtre prédéfinis grace à stream_filter_register.
La structure de la classe php_user_filter est la suivante :
class php_user_filter { public function filter() { } public function onCreate() { } public function onClose() { } }
Ce sont les méthodes publiques obtenues par rétro ingénierie. Elles définissent les methodes que l’on devra créer pour créer notre propre filtre prédéfini.
Les sockets
La fonction fsockopen permet d’ouvrir une connexion sur le port de son choix sur un serveur.
Directives Importantes
allow_url_fopen : pour autoriser les gestionnaire des flux type http et ftp (On|Off|0|1|true|false)
allo_url_include (PHP5.2) : dépend de la précédente, et permet de faire des include par les protocoles ftp et http(On|Off|0|1|true|false)