Skip to content

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)