10 votes

Gros mal de tête : CodeIgniter ou un framework personnalisé, qu'en pensez-vous?

Si vous souhaitez développer une WebApp que vous savez qu'elle va évoluer et devenir de plus en plus importante avec le temps, utiliseriez-vous CodeIgniter ou votre propre framework personnalisé?

Quels sont vos arguments en faveur de l'utilisation d'un framework open source et quels sont vos arguments contre.

Voici ce que je pense:Avantages de CodeIgniter

  • Une documentation complète -> Plus facile de travailler en équipe.
  • Tout le temps de développement est investi dans la logique métier.
  • Ne pas réinventer la roue

Inconvénients de CodeIgniter

  • Je ne suis pas sûr de sa capacité à évoluer si je veux agrandir la taille.
  • Licence MIT - je ne suis pas sûr de ce que cela signifie, mais si je veux vendre mon application sur une base de licence par licence, je ne sais pas si je pourrai le faire.

Avantages d'un framework codé sur mesure

  • Évolutif. Je peux décider de sa croissance.
  • Je possède le code
  • Conception flexible.

Inconvénients d'un framework codé sur mesure

  • Besoin de le documenter, pour que d'autres puissent collaborer.
  • Nécessité d'investir du temps pour maintenir le framework
  • Erreurs/bugs inattendus

Qu'en pensez-vous? Mon cerveau me dit d'opter pour CodeIgniter, mon cœur me dit de créer mon propre framework.

17voto

AD7six Points 22679

Utilisez quelque chose qui existe déjà.

Pourquoi CI

Pourquoi limiter votre choix à un seul framework - cela rend le choix d'un argument de l'homme de paille votre cœur ne vous dit pas d'écrire votre propre framework - votre ego le fait. Si vous éliminez le grand nombre d'autres frameworks qui existent avant de commencer - vous êtes déjà sur la voie de... beaucoup de travail.

Et CI est un choix assez pauvre.

Php est, au moment de l'écriture, à 5.4.0 - si vous êtes en mesure de choisir quel framework utiliser pour un nouveau projet - envisagez sérieusement d'utiliser un framework qui utilise les fonctionnalités 5.3+ - ou qui est déjà sur la voie pour le faire. Ne choisissez pas un framework qui a une base de code héritée remplie de code de style php4.

Inconvénients de CI

Je ne suis pas sûr de sa capacité de scalabilité si je veux grandir

Le plus probablement (et je n'utilise pas ou n'aime pas CodeIgniter) plus scalable qu'un framework personnalisé aléatoire.

Licence MIT

Il n'y a pratiquement aucune restriction sur la manière d'utiliser un logiciel sous licence MIT. Lisez MIT comme "ne supprimez pas ou ne modifiez pas les blocs de licence dans les fichiers du framework" c'est à peu près tout.

Avantages d'un framework codé sur mesure

Scalable. Je peux décider de comment il évoluera.

Êtes-vous sûr de savoir ce que scalable signifie :)

Je possède le code

Vrai dans presque tous les cas - et certainement vrai si vous utilisez un framework sous licence MIT.

Conception flexible

Cela n'est pas susceptible d'être un avantage à long terme. Par exemple, si vous obtenez un succès explosif et avez besoin de constituer une équipe de développeurs. Vous devrez former chacun d'eux sur la façon d'utiliser le framework personnalisé sur lequel l'application est construite. Cela au lieu de simplement leur indiquer quelques tutoriels pour surmonter la courbe d'apprentissage initiale de l'utilisation de .

Inconvénients d'un framework codé sur mesure

Il faut le documenter, pour que d'autres puissent collaborer.

Réaliste, à moins que vous ne construisiez un framework capable de rivaliser avec les frameworks existants, cela ne se produira pas (même avec une bonne documentation).

Il faut investir du temps pour maintenir le framework

Nous savons combien de temps cela prendra.

Erreurs/bugs inattendus

Vous passerez beaucoup de temps ici.

En résumé

  1. Un framework php est beaucoup de travail et beaucoup à maintenir. et par beaucoup - je veux dire beaucoup.
  2. Le temps que vous passez sur le code au niveau du framework est du temps que vous ne passerez pas sur les fonctionnalités de votre application.
  3. L'utilisation d'un framework php signifie que vous pouvez bénéficier de l'expérience de développeurs (espérons-le) plus expérimentés. Sans le coût élevé d'apprendre à la dure pourquoi x ne fonctionne pas, ou pourquoi y laisse votre application grande ouverte à un problème de sécurité.
  4. À chaque fois quelque chose ne fonctionne pas correctement, vous ne saurez pas avec certitude si c'est dans le code de votre application ou dans le code de votre framework (cela est vrai quoi qu'il en soit, mais vous voudrez avoir la confiance de savoir que le framework "fonctionne simplement" et que vos problèmes sont dans le code de votre application)
  5. Chaque fois que vous clignez des yeux, il y a un nouveau framework php, et ils sont tous nuls d'une certaine manière - voulez-vous être l'un d'entre eux ?

J'aimerais vraiment ajouter l'existence de tests unitaires pour que vous puissiez savoir que votre application fonctionnera - mais CodeIgniter n'a pas cela, donc si vous êtes rigide sur vos deux choix, je suppose que vous êtes seul avec ça de toute façon.

7voto

tereško Points 32847

Voici quelques fragments de code de CodeIgniter 2.1.0 .. regardez-les et dites-moi si c'est ainsi que le code PHP devrait ressembler en 2012 :

  • de system/core/CodeIgniter.php

    if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
    {
        @set_time_limit(300);
    }
    // -- snip --
    $CFG =& load_class('Config', 'core');
    // -- snip --
    $UNI =& load_class('Utf8', 'core');
    // -- snip --
    function &get_instance()
    {
        return CI_Controller::get_instance();
    }
    // -- snip --
  • de system/database/DB.php

    if ( ! isset($active_record) OR $active_record == TRUE)
    {
        require_once(BASEPATH.'database/DB_active_rec.php');
    
        if ( ! class_exists('CI_DB'))
        {
            eval('class CI_DB extends CI_DB_active_record { }');
        }
    }
    else
    {
        if ( ! class_exists('CI_DB'))
        {
            eval('class CI_DB extends CI_DB_driver { }');
        }
    }
  • de index.php

    if (defined('ENVIRONMENT'))
    {
         switch (ENVIRONMENT)
         {
              case 'development':
                   error_reporting(E_ALL);
              break;
              case 'testing':
              case 'production':
                   error_reporting(0);
              break;
              default:
                   exit('L'environnement de l'application n'est pas défini correctement.');
         }
    }

    Jusqu'à PHP 5.4, le E_ALL n'incluait pas E_STRICT, ce qui signifie que l'"environnement de développement" masque certaines erreurs. En environnement de production, il affiche toutes les erreurs, au lieu de ini_set('display_errors', false);, ce qui serait le choix raisonnable.

Cela devrait illustrer la qualité de code supérieure de CodeIgniter ...

Et si vous commenciez par choisir un framework qui a du sens, avant de commencer à jeter des termes à la mode comme "scalable" et "flexibilité".

4voto

KillerX Points 1366

Je dirais d'opter pour quelque chose qui est déjà écrit. Je ne connais pas vraiment CodeIgniter donc je ne peux pas commenter sur sa scalabilité, mais si après quelques recherches la scalabilité ne correspond pas à vos attentes, alors jetez un œil à certains des autres frameworks PHP qui existent. Il y en a sûrement un sur lequel vous pouvez baser votre application.

2voto

SayB Points 81

Si vous êtes prêt à investir du temps dans la construction de votre propre framework, alors, comme la plupart des personnes identifiées ci-dessus, vous finirez par passer beaucoup de temps à corriger les erreurs / bugs et surtout à le maintenir.

En 6 ans d'expérience, je peux vous dire que la maintenance du code n'est pas une plaisanterie. Cela nécessite beaucoup de réflexion, de planification soignée et d'efforts. Et quand on parle d'un framework, il devient inévitable d'écrire des tests unitaires.

Vous pouvez investir moins de la moitié de ce temps dans l'apprentissage d'un nouveau framework PHP qui utilise la version 5.3+ ou qui s'y dirige bientôt. Mes suggestions seraient:

  1. Utilisez CodeIgniter si vous voulez être coincé avec du code hérité et un style de programmation primitif. Mais vous pouvez certainement construire un framework personnalisé sur CodeIgniter et l'améliorer facilement sans modifier le noyau. Vous obtiendrez des performances avec CodeIgniter, mais vous perdrez beaucoup d'autres avantages, le plus grand étant les nouvelles fonctionnalités offertes par PHP 5.3+, en particulier 5.4.

  2. Utilisez CakePHP 2.0 si vous aimez utiliser un framework qui utilise un véritable modèle MVC et impose les meilleures pratiques (et finira par vous rendre meilleur, codeur discipliné) et offrira également de bonnes performances. Il a une grande communauté dans laquelle vous trouverez de nombreux plugins / composants déjà codés pour les problèmes courants. Accélérant ainsi le développement.

  3. Utilisez Lithium si vous voulez vraiment utiliser la puissance de PHP 5.3+ avec de bonnes performances, de la flexibilité et une empreinte plus petite. Ce framework offrira une courbe d'apprentissage plus raide si vous êtes relativement nouveau en programmation. Il imposera les meilleures pratiques et vous introduira à une nouvelle et meilleure façon de penser.

Il existe d'autres excellents frameworks PHP là-bas. Cependant, comme j'ai passé du temps dans ceux mentionnés ci-dessus, je vous donne mon avis d'ensemble sur ceux-ci.

J'espère que cela vous aidera.

2voto

Francois Bourgeois Points 1277

Non aux deux. Ne créez pas votre propre framework. C'est beaucoup de travail et au pire quand il s'agit de sécurité, il échouera très probablement.

En revanche, ne utilisez pas CodeIgniter, car vous ne pouvez pas utiliser de modèle de conception moderne là-bas. Voir cet article: Pourquoi CodeIgniter est mort

Je vous recommande d'utiliser un autre framework - peut-être zend. Ou vous pouvez faire le pas et même utiliser JSF ou GWT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X