Classe simple de gestion de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 6 032 fois - Téléchargée 473 fois

Description

Bonjour,

Dans le cadre d'un projet lié à mon lycée, j'ai dû développer un certain nombre de classes,
dont une faite pour gérer des fichiers. Sur mon projet je dois gérer :

- Différents Templates (2 différents pour le site public, 1 pour la partie privée et 1 pour l'administration)
- Création, import/export de fichiers (CSV et SQL)
- Tenue d'un fichier de logs
- Modification de scripts CGI , JavaScript et feuilles de style

Il me fallait donc une petite classe facile à utiliser, et surtout polyvalente.

Je sais que beaucoup de classes existent déjà, mais elles sont beaucoup trop "complètes", trop lourdes pour le
peu dont j'ai besoin, et je suis sûr que ça peut servir à quelqu'un dans le même cas que moi =)

La classe est dans le zip.

Source / Exemple :


<?php
	// Exemple d'instance pour un template
	$template = new Fichier("theme/index.html") ;
	$template->StockerContenuFichier() ;
	$template->RemplacerOccurences("###TITLE###","Accueil du site") ;
	$template->RemplacerOccurences("###CONTENU###","Voici mon site") ;
	echo $template->RetourneContenu() ;
	
	// Exemple d'instance pour un fichier de log
	$log = new Fichier("logs.txt") ;
	$log->RemplirFichier("Connexion de Machin à 10h","ajout") ;

	// Exemple d'instance pour un backup SQL
	$sql = new Fichier("script.sql") ;
	$sql->RemplirFichier($backup_sql,"nouveau") ;
?>

Conclusion :


Voilà, comme je vous l'ai dit, c'est tout simple, mais au moins ça sert aux utilisations les plus basiques.
Mon projet est en cours de développement, je serai donc sûrement amené à l'améliorer, voici les fonctions
que je compte ajouter plus tard, si j'en ai vraiment besoin (ou si vous les voulez ^^)

- Modification des droits d'accès sur le fichier (chmod)
- Forcer l'encodage en UTF-8
- Gérer des Array de données reçus en paramètres (depuis une BDD par exemple)
- Pouvoir déplacer des fichiers dans une arborescence

Merci de vos idées, conseils, mais si c'est pour me dire que ça existe déjà, lisez deux lignes plus haut ;).

@+

Alex

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
225
Date d'inscription
mercredi 26 juillet 2006
Statut
Membre
Dernière intervention
16 août 2018

BONNE ANNÉE À TOUS !!!!

Je me suis permis d'adresser un MP à NEIGEDHIVER !
J'espère qu'il ne m'en voudra pas !
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
J'ai pas tout ça en stock... Mon non-framework est en cours de développement. Ce que j'ai pour l'instant, des classes pour gérer :
- des fichiers de configuration
- la session utilisateur et les variables
- les cookies
- chiffrement/déchiffrement de données
- accès BDD (une surcharge de PDO incroyablement basique)
- les vues (= templates) avec gestion du titre, des js, css et meta
- des modules à insérer où on veut sur une page
- parcours de répertoires/fichier récursif avec filtres

Ca fait presque tout...
Pour les templates, comme je te le disais, ce ne sont que des fichiers PHP qui mettent en forme les variables passées à l'objet View histoire de les placer au bon endroit.
Pour les utilisateurs, j'ai une classe user hyper élémentaire qui se contente de charger les données du membre quand il se connecte (ou qu'il récupère sa session). Actuellement, je suis dans un contexte un peu particulier pour les membres, puisque je n'ai que 3 niveaux à gérer (et je n'en aurai pas plus) : membre connecté, modérateur, admin. Pas d'anonyme, c'est un serveur privé. Donc pour la gestion des permissions, j'ai rien du tout à part des méthodes du genre canAdmin(), isModo()...
C'est vraiment rien de transcendant, à la limite, ça doit pouvoir se développer tout ça en 2 jours. J'ai mis beaucoup de temps pour en arriver là, parce que j'ai essayé plein de choses, avec des librairies tierces, avec des morceaux de frameworks, j'ai fait, défait, refait (chaque fois depuis zéro) plusieurs fois, en prenant toujours en compte dans les nouvelles "versions" les problèmes que je rencontrais avant. J'ai un gros avantage : je suis pas pressé par le temps ou un client pour l'instant...

Pour l'accès à la BDD, ma classe est hyper basique :
- c'est un singleton (parce que je SAIS que je n'aurai pas besoin d'une autre base/connexion, de toute façon ça prend 2 minutes à modifier)
- étend PDO
- le constructeur charge la configuration de la connexion et établit la connexion via PDO (parent)
- c'est tout

Pour les autres classes, comme par exemple une classe Article, j'envisage simplement de lui coller des méthodes permettant d'effectuer des taches élémentaires : insérer un nouveau, récupérer les N derniers, etc. Avec __get() pour se dispenser du préfixe des champs dans la table, par exemple récupérer article_id avec $article -> id; sachant que la requête SQL va faire un violent SELECT * (ça en fera peut-être crier certains, mais le moteur du SGBD est prévu pour gérer ça) et les données stockées dans un tableau associatif dont la clé est le nom du champ. __get() va donc aller chercher la donnée en la préfixant comme il faut. C'est juste du confort lié à la contrainte que je m'impose de préfixer les noms de mes champs afin d'éviter les doublons dans le dictionnaire de données (parce que c'est mal).

Euh voilà, je sais pas quoi te dire d'autre... Les classes nécessaires pour la suite, j'ai rien de prévu pour le moment, je vais sûrement les écrire à la-rache.com quand j'en aurai besoin... Elles seront sûrement crades au début, puis quand je les aurai réécrites une bonne dizaine de fois (minimum) elles commenceront à ressembler à quelque chose.

Euh bon, mais si tu veux voir quelques fichiers, suffit de me filer ton mail en mp, tu verras un peu à quoi ressemble un non-framework en développement constant (c'est un peu de l'eXtreme Programming, mais en moins évolué mais encore plus souple, une méthode tellement agile que ça change tout le temps : un mélange la-rache.com et de MVC, de Merise (pas les fruits) et du bordel non commenté mais quand même bien rangé). Pis si tu veux voir, je suis curieux d'avoir un retour sur ce que ça t'inspire. Mais je doute qu'avec ça tu parviennes à faire un site aussi rapidement qu'avec ModX : moi je m'y retrouve dedans, c'est ma logique, ma façon de penser... Putain, c'est super intime en fait ! Arf !
Messages postés
5
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Et sinon tu as des "briques" à me conseiller ? Des classes simples et légères pour gérer des templates, des utilisateurs, des artciles et une BDD ^^ je cherche et teste mais si tu as des idées je suis preneur :p

Je suis d'accord, le code porky a des de beaux jours encore.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Je sais pas si on peut parler de framework, tellement c'est pas rigide (alors qu'un framework doit apporter un cadre stable, moi, ça bouge tout le temps et c'est modulable à outrance). C'est juste une approche différente, tirée de mon expérience (assez maigre, mais suffisante à mon goût) des frameworks existants. J'essaie de prendre ce qu'il y a de bien dans chaque : je ne fais pas d'un framework MCV un dogme, comme c'est le cas avec Zend ou même Kohana, où un contrôleur est une classe, une vue une classe, un modèle une classe très rigide avec un ORM... Chez moi, un contrôleur c'est juste du code. Une vue, c'est juste un fichier PHP (qui servait à ça à la base !) dans une classe (uniquement l'aspect pratique pour stocker les variables, locales et globales, des modules à afficher, rajouter des JS, CSS, Meta...). Pas de rigidité dans les modèles (peut-être pas assez, d'ailleurs).

Bref. Sinon, effectivement, quand on commence à coder en objet, on pense différemment. On ne voit pas une liste d'instructions, mais des briques qui s'emboitent. Pour moi, c'est une sorte de super Tetris lol

Sinon, le code spaghetti a encore de longues années devant lui :)
Messages postés
5
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
28 décembre 2009

Oui donc en gros tu t'es écrit ton propre framework, comme ça tu sais avec quoi tu bosses, et tu codes pépère "ze finger in the noze" ...

Moi à la base je suis en réseaux, donc je code pour mon plaisir, sur le projet qu'on m'a proposé (parce que je suis le seul de la classe à ne pas cracher sur la prog) je me suis dit que ça serait intéressant de le faire en objet, un truc propre quoi ... Mais fatalement qui dit objet dit nouvelles manières de penser le programme, de le fractionner en modules et tout.

J'ai déjà développé un logiciel de gestion en PHP/MySQL (3.400 lignes pondues en 1 mois et demi) pour une entreprise nantaise, mais en procédural avec un code absolument immonde ^^
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.