Framework PHP

Démarré par Helmasaur, 01 Avril 2009 à 16:43

0 Membres et 1 Invité sur ce sujet

Je ne sais pas si ça il fallait mettre ce sujet ici ou dans Informatique vu qu'il concerne plus ou moins les deux.

Je parlerais ici seulement de développement de site web. Peut être plus tard les questions sur le développement en Python et C++.
J'ai déjà créer des applications web (la plupart basique) mais sans utilisé de structure permettant une gestion facile (sans MVC par exemple).
Je voulais passer au PHP OO en codant un framework moi-même. J'ai finalement abandonné car trop long et surtout, je ne voulais pas réinventer la roue alors que ce n'est pas pour un grand projet.
Alors voilà ce que je me demande :
— Est-ce que j'ai tort de ne pas coder mon propre framework ?
— Quel framework choisir (je me suis seulement intéressé à CakePHP pour l'instant) ?

Merci d'avance ;).

Désolé d'être inculte à ce sujet mais qu'est-ce qu'un Framework :mrgreen:?

Un framework est tout simplement un logiciel intégré qui permet de développer plus simplement.

Un excellent framework php que je recommande à tout le monde, c'est codeigniter qui est basé sur un modèle MVC ( Model, View , Controller)

Pour plus d'infos : http://codeigniter.com/
La doc est très complète :)

J'ai souvent vu CodeIgniter et Synphony comme nom de framework en plus de CakePHP. Une fois que j'aurais fini de lire la doc de CakePHP, je verrais ce que tu cites Binbin ;).

Sinon, je reviens à la question qui m'importe le plus : Doit-on créer son framework soi-même ?
[spoiler]Ou pas :ninja:.[/spoiler]

Et que faut-il surtout pour dire qu'un framework est bon ?

A quoi bon coder son propre framework quand ceux existants fonctionnent bien . Ils ne sont pas là pour faire joli ;)

Pour ma part, un bon framework est un logiciel qui permet de faire des applications web pouvant être être très simplement mises à jour dans le temps. C'est le cas pour codeigniter.

Citation de: Binbin le 02 Avril 2009 à 16:09
A quoi bon coder son propre framework quand ceux existants fonctionnent bien . Ils ne sont pas là pour faire joli ;)

Pour ma part, un bon framework est un logiciel qui permet de faire des applications web pouvant être être très simplement mises à jour dans le temps. C'est le cas pour codeigniter.
D'accord, j'abandonne complètement l'idée de développer un framework moi-même. J'ai hésité parce que je ne savais pas si je pouvais faire CE que je voulais avec le code de d'autres personnes.

En fait, j'ai vu qu'en utilisant un framework, il y a des « normes » à respecter. Ce n'est pas réellement le problème. Ce que je voudrais savoir est les fonctions qui sont intégrées dans un framework (j'ai vu qu'il y avait une lib AJAX/JS et c'est sûrement le cas de PHP).
Quelles sont ces principales fonctions ? Connexion à la BDD ? Système de cache ?

J'ai déjà cherché sur Internet des avis sur plusieurs framework et en fait, j'aimerais utiliser un framework dès le départ pour éviter de migrer sur un autre plus tard.

Le plus simple est que tu regardes le sommaire de la documentation pour voir ce que tu peux faire :)
http://codeigniter.com/user_guide/

C'est très formateur.
J'ai toujours réussi à faire tout ce que je voulais avec ce framework. Bon après c'est sûr que si tu fais des trucs genre manipulations d'image, je conseille de faire ca avec imagick en bash shell :P

Ca poutre :D

Ah oui merci, je vais voir ça en détail.
J'aimerais bien un avis de d'autres développeurs web pour comparer leurs avis ^_^.


PS : il y a souvent comme critère le fait que la documentation soit traduit en français. Pour moi, ça ne m'importe pas si il n'y a que la version anglaise ;).

Bah moi je dis, OUI, codes ton propre framework.


  • Personne n'a les mêmes besoins; un framework tiers ne répondra jamais à tes attentes à 100%
  • Ca te fera apprendre certainement plus qu'en utilisant du prémaché
  • La fierté de l'avoir fait toi même
  • J'ai mentionné le fait que ça sera plus flexible et au final ça répondra à tes attentes?

Bon, certaine personnes pourraient te dire que si tu le fais toi même, ça sera pas securisé, tu perdras du temps, blabla...mais ces personnes n'ont certainement jamais réalisé qu'on apprenait beaucoup mieux de ses erreurs, et auraient probablement du mal à faire les choses par elles même puisqu'elles sont habituées au pré-mâché.

Citation de: Noxneo le 04 Avril 2009 à 00:25
Bah moi je dis, OUI, codes ton propre framework.


  • Personne n'a les mêmes besoins; un framework tiers ne répondra jamais à tes attentes à 100%
  • Ca te fera apprendre certainement plus qu'en utilisant du prémaché
  • La fierté de l'avoir fait toi même
  • J'ai mentionné le fait que ça sera plus flexible et au final ça répondra à tes attentes?

Bon, certaine personnes pourraient te dire que si tu le fais toi même, ça sera pas securisé, tu perdras du temps, blabla...mais ces personnes n'ont certainement jamais réalisé qu'on apprenait beaucoup mieux de ses erreurs, et auraient probablement du mal à faire les choses par elles même puisqu'elles sont habituées au pré-mâché.
Au départ, je pensais à peu de chose près la même chose mais en regardant le code de framework « professionnel », je me suis dis que je n'avais pas le niveau pour le faire moi-même.

Si (je dis bien si), au lieu d'utiliser un framework qui n'est pas le miens, je le créer totalement. Dois-je en faire pour plusieurs de mes projets ou le développer au fur et à mesure ?

Bah les deux. Tu écris une base fonctionnelle que tu étends au fur et à mesure de tes besoins.

CitationAu départ, je pensais à peu de chose près la même chose mais en regardant le code de framework « professionnel », je me suis dis que je n'avais pas le niveau pour le faire moi-même.
Essayer = apprendre.
:(


Citation de: Noxneo le 04 Avril 2009 à 11:52
Bah les deux. Tu écris une base fonctionnelle que tu étends au fur et à mesure de tes besoins.

CitationAu départ, je pensais à peu de chose près la même chose mais en regardant le code de framework « professionnel », je me suis dis que je n'avais pas le niveau pour le faire moi-même.
Essayer = apprendre.
:(
D'accord merci !
Une dernière question (bête) : Il faut un framework universel ou plusieurs spécialisés en fonction du type de site ?

Les deux sont possibles, c'est à toi de choisir.

Je vous remercie Binbin et Noxneo.

J'aimerais juste savoir deux choses :

  • Est-ce qu'il y a la doc de CakePHP ou CodeIgniter ?
  • Dans un framework, il y a bien sûr les dossiers MVC et le noyau. Mais les fonctions principales dans le noyaux sont quoi ? Je pense qu'il y a les fonctions élémentaires de vérification (avec Regex) plus le générateur de code CAPTCHA. Je rajouterais aussi les fonctions concernant les formulaires (émotionnes, BBcode, et traitement des données). Avec en plus divers libs comme pour AJAX (jQuery ou créer sa lib perso ?).

Au départ, je ne voulais pas utiliser un framework « pro » parce que je me disais qu'en créant le miens, le code sera plus adapté, que je pourrais faire ce que je voudrais selon la façon que je pense et en utilisant 100% des capacités du framework.
Mais après quelques essais, je ne sais pas vraiment quoi ajouter en plus de MVC et les fonctions élémentaires. Et surtout, ce n'est pas le problème du temps de développement mais le fait que je ne pense pas avoir la capacité de coder mon propre framework.
Je dis au passage que je suis encore débutant en POO mais je pense qu'en procédural, mon niveau est assez bon.
Ce que je souhaite, c'est utiliser un seul framework pour tous mes projets (à la rigueur deux).

Sinon, aucun autre développeur ne souhaite faire un commentaire ?

Citation de: Helmasaur le 06 Avril 2009 à 09:43
  • Est-ce qu'il y a la doc de CakePHP ou CodeIgniter ?

Voià la doc : http://codeigniter.com/user_guide/

Au passage, Code igniter est extensible sur tous les fronts. Si jamais un fonction que tu souhaites n'existe pas parmi les nombreuses classes déjà disponibles, tu peux en faire toi même  et/ouétendre les classes déjà existante. :)

Citation de: Binbin le 06 Avril 2009 à 11:14
Citation de: Helmasaur le 06 Avril 2009 à 09:43
  • Est-ce qu'il y a la doc de CakePHP ou CodeIgniter ?

Voià la doc : http://codeigniter.com/user_guide/
Ah désolé, j'ai oublié de mettre en PDF parceque je souhaiterais pouvoir avoir la documentation même sans internet. Il faut peut-être aspirer les pages ?

Citation de: Binbin le 06 Avril 2009 à 11:14
Au passage, Code igniter est extensible sur tous les fronts. Si jamais un fonction que tu souhaites n'existe pas parmi les nombreuses classes déjà disponibles, tu peux en faire toi même  et/ouétendre les classes déjà existante. :)
J'avais vu ça avec CakePHP où il y a le dossier « libs » pour les fonctions ou classes annexes. Ce qui est super !

Il me semble que tu as la doc code igniter quand tu télécharges le framework :)


CitationMais après quelques essais, je ne sais pas vraiment quoi ajouter en plus de MVC et les fonctions élémentaires.

Si tu fais un framework avec un projet en tête et que tu ne sais pas quoi mettre dans ton framework, c'est que tu te planteras quand tu feras ton projet.

Citation de: Noxneo le 06 Avril 2009 à 18:56
CitationMais après quelques essais, je ne sais pas vraiment quoi ajouter en plus de MVC et les fonctions élémentaires.

Si tu fais un framework avec un projet en tête et que tu ne sais pas quoi mettre dans ton framework, c'est que tu te planteras quand tu feras ton projet.
Pour moi un framework permet de ne pas coder les fonctions/classes élémentaires. Et à partir de ça, créer son application. Mais je ne suis pas sûr en fait.
Pour le cahier des charges, il avancce bien ^_^. Il ne me manque vraiment plus que ce choix pour me lancer.

Donc durant mes recherches, j'ai fini par abandonner l'idée de développeur mon propre framework. Ça me prendrait trop de temps à le créer, à le débugger et pourquoi réinventer la roue ?
Je préfère mettre mon énergie et mon temps à l'application lui même !

Maintenant, il me reste le choix du framework. Il y a Symphony, CakePHP et CodeIgniter.
J'hésite vraiment entre les trois. Il semblerait que Symphony soit le meilleur (d'après les avis que j'ai lu ;)).

Ca après c'est une simple question de goût.

Je trouve que Symphony et Codeigniter cela se vaut. Mais j'ai une grande préférence pour Code igniter dans le sens qu'il est d'une très grande simplicité à installer sans se prendre la tête et il a un système de débuguage qui en vaut la peine.

Citation de: Binbin le 08 Avril 2009 à 15:27
Ca après c'est une simple question de goût.

Je trouve que Symphony et Codeigniter cela se vaut. Mais j'ai une grande préférence pour Code igniter dans le sens qu'il est d'une très grande simplicité à installer sans se prendre la tête et il a un système de débuguage qui en vaut la peine.
Le problème, c'est qu'il est dur de comparer des framework. C'est très long de tous les tester :o !

C'est pour ca que je regarde des choses plus pointu comme le débugueur.

La plupart des frameworks permet de faire à peu près les mêmes choses. C'est pour ca que je regarde le coté pratique de ce genre d'applications.

Citation de: Binbin le 08 Avril 2009 à 15:39
C'est pour ca que je regarde des choses plus pointu comme le débugueur.

La plupart des frameworks permet de faire à peu près les mêmes choses. C'est pour ca que je regarde le coté pratique de ce genre d'applications.
Je prendrais un au « hasard ». Surtout que tout sont suffisants. Si je veux utiliser par exemple la table des membres d'un forum non codé par moi-même (ou autre chose tierce) dans mon application, est-ce que c'est faisable ?

Oui c'est faisable à condition que cette table soit dans la même base de données que ton appli.
D'ailleurs, la gestion de sessions de Codeigniter est vraiment bien fichu (utile pour les espaces membres)
Les sessions sont stockées automatiquement en base de données.

J'ai d'ailleurs faire une librairie qui le gère si ça t'intéresse :)

08 Avril 2009 à 16:15 #26 Dernière édition: 08 Avril 2009 à 16:22 par Helmasaur
Citation de: Binbin le 08 Avril 2009 à 15:54
Oui c'est faisable à condition que cette table soit dans la même base de données que ton appli.
D'ailleurs, la gestion de sessions de Codeigniter est vraiment bien fichu (utile pour les espaces membres)
Les sessions sont stockées automatiquement en base de données.

J'ai d'ailleurs faire une librairie qui le gère si ça t'intéresse :)
J'ai vu qu'il y faut obligatoirement utiliser une BDD. Je pensais que je pouvais créer une librairie pour en gérer plusieurs :(.
Pour les sessions, je pense que j'utiliserais le système du forum (j'ai choisi SMF - après plusieurs testes, c'est celui que j'ai choisi). Mais tout de suite, je me demande si il est possible de modifier la table du forum pour y ajouter les données de mon application en plus de ceux du forum :huh:.

Mais j'ai un mini-projet. Si c'est possible d'utiliser ta librairie, pourquoi pas ^_^.

Il ne me reste plus qu'à apprendre à utiliser CI. Et oui, j'ai choisi Codeigniter parce qu'il me semble que Symphony est plus fait pour les gros projets.
Il reste un point que j'ai pas parlé, c'est AJAX. J'ai commencé à apprendre à l'utiliser. Comment ça se passe sous CI ?


PS : rien à voir mais j'aimerais avoir des informations sur SVN si possible. Je suis intéressé sur le fait de pouvoir revenir sur une ancienne version :P.

Déjà non tu n'es pas obligé d'utiliser une base de données sur CI. A toi de configurer ton appli comme tu le souhaites :)

Ensuite à partir du moment ou toutes tes tables sont dans la même base, tu peux faire ce que tu veux dans ta base (forum externe ou pas).
Il me semble que tu peux créer plusieurs instances de connexion et donc utiliser plusieurs bases avec CI (A voir)

Pour implémenter Ajax dans ton projet, c'est très facile. Il suffit de charger le js correspondant à ton framework (Mootools, Prototype/Script aculous etc) dans ta page (dans la view entre autre)

Pour ma part quand je code sur Code igniter, j'utilise les controlleurs pour les paramètres généraux d'une page avec un fichier de config par controlleur. J'utilise les modèles pour tout ce qui est interaction avec la base de données et enfin les views avec que le html à l'interieur , rien d'autre :)


Citation de: Binbin le 08 Avril 2009 à 16:20
Déjà non tu n'es pas obligé d'utiliser une base de données sur CI. A toi de configurer ton appli comme tu le souhaites :)

Ensuite à partir du moment ou toutes tes tables sont dans la même base, tu peux faire ce que tu veux dans ta base (forum externe ou pas).
Il me semble que tu peux créer plusieurs instances de connexion et donc utiliser plusieurs bases avec CI (A voir)
Quand je parlais de modifier la table, je me demandais si le forum allait retourner une erreur en fait mais je ne pense pas finalement.

Citation de: Binbin le 08 Avril 2009 à 16:20
Pour implémenter Ajax dans ton projet, c'est très facile. Il suffit de charger le js correspondant à ton framework (Mootools, Prototype/Script aculous etc) dans ta page (dans la view entre autre)

Pour ma part quand je code sur Code igniter, j'utilise les controlleurs pour les paramètres généraux d'une page avec un fichier de config par controlleur. J'utilise les modèles pour tout ce qui est interaction avec la base de données et enfin les views avec que le html à l'interieur , rien d'autre :)
Pour la POO, je suis encore un grand débutant :(. Mais je vais voir ça plus en détail en commençant de coder.
Quand à l'AJAX, je ne connais que jQuery (et de nom encore), les autres, je ne sais pas du tout ce que c'est.

Il me reste encore beaucoup à apprendre avant de pouvoir utiliser CI correctement :mellow: !


Je remercie Binbin et Noxneo pour leur avis ainsi que leurs conseilles.

Il faut bien commencer un jour :)

Si tu veux je peux te vendre une solution PHP de ma boite, c'est de la grosse balle.  :mrgreen:

Envoie moi un MP, je te fais faire un devis :o

Citation de: Noxneo le 08 Avril 2009 à 22:19
Si tu veux je peux te vendre une solution PHP de ma boite, c'est de la grosse balle.  :mrgreen:

Envoie moi un MP, je te fais faire un devis :o
On peut marchander :ninja: ?

Je trouve CodeIgniter très bien fais. J'arrive de mieux l'utiliser mais il reste encore beaucoup de fonctions à tester :).
Pour ceux qui hésiterais comme moi. Je suis très content de mon choix ^_^.

J'ai voulu faire une page donc afficher une image.

Je me demande ce qui est mieux entre :

  • Utiliser les balises HTML
  • Utiliser la fonction de CodeIgniter

Dans les deux cas, j'aimerais savoir où mettre les images, les feuilles de style et les scripts JS.

Citation de: Helmasaur le 19 Avril 2009 à 10:57
Je me demande ce qui est mieux entre :

  • Utiliser les balises HTML
  • Utiliser la fonction de CodeIgniter

La deuxième option. Le moins y'a de choses codées en dur, le mieux c'est.


Citation
Dans les deux cas, j'aimerais savoir où mettre les images, les feuilles de style et les scripts JS.

L'idée est de faire un dossier "public" complètement à la racine de ton site web, sur le même niveau que ton dossier "system".

Citation de: Noxneo le 19 Avril 2009 à 14:55
Citation de: Helmasaur le 19 Avril 2009 à 10:57
Je me demande ce qui est mieux entre :

  • Utiliser les balises HTML
  • Utiliser la fonction de CodeIgniter

La deuxième option. Le moins y'a de choses codées en dur, le mieux c'est.


Citation
Dans les deux cas, j'aimerais savoir où mettre les images, les feuilles de style et les scripts JS.

L'idée est de faire un dossier "public" complètement à la racine de ton site web, sur le même niveau que ton dossier "system".
Bizarre de ne plus du tout utiliser de HTML (ou presque) :huh: mais si c'est ce qui est conseillé, pourquoi pas.
Par défaut, c'est bien à la racine qu'il faut mettre les images du site mais je me demandais si je devais faire mes propres fonctions pour l'emplacement des images (plus proche de la vue).

Merci ^_^.

Un autre problème :P. Alors voilà, j'ai demandé de l'aide sur les forums de CI. J'ai à peu près eu la réponse mais je me pose une question maintenant :

Pour ne pas avoir à modifier chaque page à chaque mise à jour, il y a deux systèmes :

  • Inclure <head>, le menu et le footer
  • Inclure le contenu dans une page générale

La première solution, je n'ai pas de problème. Mais je souhaiterais gagner du temps en n'ayant pas besoin d'inclure 3 pages dans chaque contrôleur.
Y-a-t-il une solution à ce problème ?

08 Mai 2009 à 17:17 #36 Dernière édition: 09 Mai 2009 à 14:05 par Helmasaur
Pour le message au dessus, j'ai finalement inclus chaque partie -_-.

EDIT : Il fallait juste que le nom de la classe soit la même que celle du fichier ;).

J'aimerais passer mon code en OO. Mais je ne me souviens plus trop de cette méthode de programmation. Et avec CI, je me perds un peu. Pour commencer simple, j'ai voulu faire une classe simple : News avec comme méthode insertNews qui a pour but d'ajouter une ligne dans la base de données.


<?php
class News extends Model {

private $title;

function __construct()
{
parent::Model();
}

function insertNews()
{
$news = new News;
$this->db->insert('news'$object);
}
}

/* End of file news.php */
/* Location: ./system/application/models/news.php */


Pour que ça soit de l'orienté objet, où dois-je mettre assigner la valeur provenant du formulaire vers la variable title ?


J'aurais bien aidé, mais on a pas encore commencé à étudier le framework php, C, VB, Java et ce qui va avec x)

Une petite question, framework = .net ?

Citation de: A Link le 04 Septembre 2010 à 17:51
Une petite question, framework = .net ?
Non, du tout. C'est un groupe de fonctions qui permet au programmeur de coder plus rapidement.

J'aimerais juste cette petite explication. C'est la seule chose qui m'empêche d'avancer :(.

Tu dois implémenter un accesseur dans ta classe.

function setTitle($title){
$this->title= $title;
}

que t'appelleras du constructeur ou d'une autre fonction qui construit la news par exemple.

Citation de: Guillaume le 04 Septembre 2010 à 19:11
Tu dois implémenter un accesseur dans ta classe.

function setTitle($title){
$this->title= $title;
}

que t'appelleras du constructeur ou d'une autre fonction qui construit la news par exemple.
D'accord, je vois à peu près ce qu'il faut faire. Je vais de ce pas tester.

Helmasaur, si tu veux passer entièrement en OO. Passe de Codeigniter à Kohana ^^ C'est le pied et tu ne seras pas trop déboussolé ^

Citation de: Binbin le 05 Septembre 2010 à 13:15
Helmasaur, si tu veux passer entièrement en OO. Passe de Codeigniter à Kohana ^^ C'est le pied et tu ne seras pas trop déboussolé ^
Je suis déjà tomber sur ce framework en cherchant des informations pour la POO mais j'ai pas aimé la documentations.

J'ai refais un tour dans la docs de Kohana et ils montrent qu'il faut ajouter chaque variable dans la BDD et non un objet. Que faut-il faire donc ?

J'ai jeté de nouveau un œil à Kohana et la doc est plus complète qu'avant. Par contre, quand je télécharge la version 3.x.x, il n'y a pas le fichier config.php. Est-ce normal ?

En lisant la documentation de Kohana, j'ai l'impression que son utilisation complique le code comparé à Code Igniter. Y a-t-il un réel avantage à utiliser ce fork 

CitationY a-t-il un réel avantage à utiliser ce fork

Ça y'a que toi qui peux y répondre. La question a te poser, c'est:

Est ce que le temps d'apprentissage du framework est inférieur au temps qu'il te faudrait pour développer les mêmes bases pour ton projet + le temps de maintenance que ça t'épargnera dans le futur?

Si oui, alors le framework marche pour toi. Si non, et bien non :P

Le problème étant que j'utilise Code Igniter depuis un certain déjà et je n'ai jamais utilisé Kohana. Seulement lire la doc à plusieurs reprise. Je ne peux donc pas juger ce dernier.

Quand on utiliser des accesseurs, comment leur donner une valeur ? Par exemple :
[code
<?php
class News extends Model {

  function 
__construct()
  {
    
parent::Model();
  }

  function 
setTitle($title)
  {
    
$this->title $title;
    return 
$this->title;
  }

  function 
setContent($content)
  {
    
$this->title $content;
    return 
$this->content;
  }

  function 
insertNews()
  {
    
$this->db->insert('news'$this);
  }
}
?>

La valeur de $title comment on donne cette valeur à l'attribut ? Et si on ne veut pas ajouter une news mais en afficher une de la base de données, il n'y aura pas de conflits ?
Je suppose qu'il manque quelque chose dans le constructeur pour donner les valeurs aux attributs...