Большая головная боль: CodeIgniter или пользовательские рамки, что вы думаете?

Если вы хотите разработать WebApp, который, как вы знаете, будет масштабироваться и становиться все больше и больше с течением времени, вы бы использовали CodeIgniter или свою собственную фреймворк?

Каковы ваши аргументы для использования фреймворка с открытым исходным кодом и ваших аргументов против него.

Вот мои мысли: Преимущества CodeIgniter

  • Отличная документация → Легче работать в команде.
  • Все время разработки инвестировано в бизнес-логику.
  • Не изобретать колесо

CodeIgniter Cons

  • Не уверен, насколько он масштабируемый, если я хочу расти
  • Лицензия MIT - не уверен, что это значит, но если я захочу продать свое приложение на основе лицензии, я не уверен, что смогу это сделать.

Пользовательские закодированные фреймворки

  • Масштабируемость. Я могу решить, как он будет расти.
  • У меня есть код
  • Flexcible design.

Пользовательские закодированные рамочные мишени

  • Необходимо документировать его, чтобы другие могли сотрудничать.
  • Необходимо инвестировать время для поддержания структуры
  • Неожиданные ошибки/ошибки

Что вы берете на себя? Мой мозг говорит мне идти с CodeIgniter, мое сердце говорит мне, что я создаю свою собственную инфраструктуру.

Ответ 1

Используйте то, что уже существует.

Почему CI

Зачем ограничивать свой выбор одним фреймворком - он делает выбор близким аргументом соломы, ваше сердце не говорит вам писать свои собственные рамки - ваше эго. Если вы устраните огромное количество других фреймворков, которые существуют до запуска - вы уже на пути к.. много работы.

И CI довольно плохой выбор.

Php на момент написания статьи 5.4.0 - если вы в состоянии выбрать, какую инфраструктуру использовать для нового проекта, - серьезно подумайте об использовании фреймворка, который использует функции 5.3+, или уже включен путь для этого. Не выбирайте структуру, которая имеет устаревшую базу кода, полную кода стиля php4.

CI Cons

Не уверен, насколько он масштабируемый, если я хочу расти

Скорее всего (и я не использую или как воспламенитель кода) более масштабируемый, чем произвольная пользовательская среда.

Лицензия MIT

Практически нет ограничений на использование лицензионного программного обеспечения MIT. Прочитайте MIT как "не удаляйте и не модифицируйте блоки лицензий в файлах фреймворка".

Пользовательские закодированные рамки

Масштабируемость. Я могу решить, как он будет расти.

Вы уверены, что знаете, какие масштабируемые средства:)

Я владею кодом

True почти во всех случаях - и определенно верно, если вы используете лицензированную среду MIT.

Гибкая конструкция

Это вряд ли принесет пользу в долгосрочной перспективе. Например, вы достигаете взрывного успеха и должны привлечь команду разработчиков. Вам нужно будет обучить каждого из них тому, как использовать пользовательскую инфраструктуру, на которой построено приложение. Это вместо того, чтобы просто указывать их на несколько руководств, чтобы получить начальную кривую обучения использования < insert name выбранной рамки здесь > .

Пользовательские закодированные рамочные мишени

Необходимо документировать его, чтобы другие могли сотрудничать.

Реально, если вы не создадите инфраструктуру, способную конкурировать с существующими инфраструктурами, которые не будут выполняться (даже с хорошей документацией).

Необходимо инвестировать время для поддержания структуры

Не стоит недооценивать, сколько времени потребуется.

Неожиданные ошибки/ошибки

Вы потратите много времени здесь.

В заключение

  • Структура php - это много работы и многого для поддержания. и много - я имею в виду много.
  • Время, затрачиваемое на код уровня фреймворка, - это время, которое вы не потратите на собственные функции приложения.
  • Использование инфраструктуры php означает, что вы можете воспользоваться опытом (надеюсь) более опытных разработчиков. Без высокой стоимости обучения трудно, почему x не работает, или почему y оставляет ваше приложение широко открытым для некоторой проблемы безопасности.
  • Всякий раз, когда что-то работает некорректно, вы не будете точно знать, есть ли это в коде приложения или кодеке фреймворка (это правда, несмотря ни на что, но вы хотите, чтобы уверенность в том, что структура "просто работает", и что ваши проблемы находятся в вашем коде приложения)
  • Каждый раз, когда вы моргаете там новую инфраструктуру php, и все они сосут в некотором роде - вы хотите быть одним из них?

Я бы очень хотел добавить существование модульных тестов, чтобы вы могли знать, что ваше приложение будет работать, но у этого воспламенителя этого нет, поэтому, если вы жестко настроены на свои два варианта, я думаю, вы на ваш собственный с этим в любом случае.

Ответ 2

Вот несколько фрагментов кода из CodeIgniter 2.1.0. Посмотрите на них, а затем скажите мне, как именно выглядит код php в 2012 году:

  • из 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 --
    
  • из 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 { }');
        }
    }
    
  • из index.php

    if (defined('ENVIRONMENT'))
    {
         switch (ENVIRONMENT)
         {
              case 'development':
                   error_reporting(E_ALL);
              break;
              case 'testing':
              case 'production':
                   error_reporting(0);
              break;
              default:
                   exit('The application environment is not set correctly.');
         }
    }
    

    До PHP 5.4 в E_ALL не было E_STRICT, что означает, что "среда разработки" скрывает некоторые ошибки. А в производственной среде все ошибки вместо ini_set('display_errors', false);, что было бы разумным выбором.

Это должно показать превосходное качество кода CodeIgniter...

Как насчет вас сначала выбрать структуру, которая имеет смысл, а затем начать метать фантастические слова, такие как "масштабируемые" и "гибкие".

Ответ 3

Я бы сказал, иди с тем, что уже написано. Я действительно не знаю CodeIgniter, поэтому я не могу прокомментировать его масштабируемость, но если после некоторого исследования масштабируемость не так, как вам нужно, взгляните на некоторые из других фреймворков PHP, которые существуют там. Там обязательно будет тот, на который вы можете основать свое приложение.

Ответ 4

Если вы готовы инвестировать время в создание собственной структуры, то, как и большинство людей, указанных выше, вы в конечном итоге тратите много времени на исправление ошибок/ошибок и, прежде всего, на их поддержку.

В моем 6-летнем опыте я могу сказать вам это, обслуживание кода - не шутка. Это требует много внимания, тщательного планирования и усилий. И когда вы говорите о структуре, становится неизбежным писать модульные тесты.

Вы можете инвестировать менее половины того времени в изучение новой фреймворк PHP, которая использует 5.3+ или скоро отправится туда. Мои предложения были бы следующими:

  • Используйте CodeIgniter, если вы хотите придерживаться устаревшего кода и примитивного стиля программирования. Но вы можете определенно создать собственный фреймворк поверх CodeIgniter и легко его улучшить без изменения ядра. Вы получите производительность из CodeIgniter, но вы потеряете много других положительных героев, самые большие из них - новые функции, предлагаемые PHP 5.3+, особенно 5.4.

  • Используйте CakePHP 2.0, если вы хотите использовать фреймворк, который использует истинный шаблон MVC и применяет лучшие практики (и в конечном итоге делает вас лучше, дисциплинированным кодером) и даст хорошую производительность. Имеет большое сообщество, из которого вы найдете много плагинов/компонентов, уже закодированных для общих проблем. Следовательно, ускоряется развитие.

  • Используйте Lithium, если вы действительно хотите использовать возможности PHP 5.3+ с отличной производительностью, гибкостью и меньшим размером. Эта структура предложит более крутую кривую обучения, если вы относительно новичок в программировании. Он будет применять лучшие практики и познакомить вас с новым и лучшим образом мышления.

Есть и другие отличные фреймворки PHP. Однако, так как я провел время в упомянутых выше, так что я даю вам знать мнение о птичьем взгляде на них.

Надеюсь, что это поможет.

Ответ 5

Нет для обоих. Не пишите собственные рамки. Это много работы, и самое позднее, когда дело доходит до безопасности, скорее всего это сработает.

С другой стороны, не используйте CodeIgniter, потому что вы не можете использовать какой-либо современный шаблон дизайна. См. Эту статью: Почему CodeIgniter мертв

Я рекомендую вам использовать другую фреймворк - возможно zend. Или вы сделаете шаг и используете даже JSF или GWT.

Ответ 6

Все время разработки инвестировано в бизнес-логику.

Ты забыл о кривой обучения здесь. Все время разработки инвестировано в бизнес-логику, да.
Но прежде чем вы начнете, вам нужно изучить совершенно новый язык, который не является PHP, который вы знаете, но совершенно другим. И во много раз больше.

Масштабируемость. Я могу решить, как он будет расти.

Только если вы достаточно опытные, чтобы знать все возможные проблемы.
Мы все постоянно учимся, и теперь у меня есть знания, которые я принимаю еще несколько лет назад.

Для меня главный недостаток всех "официальных" фреймворков - они раздуты. Сделанные с учетом совместимости, они поддерживают тысячи незначительных проблем, раздувая код.
Если вы хотите изменить часть кода - у вас проблемы. Код БОЛЬШОЙ, и вы об этом не знаете. И вам нужны возрасты, чтобы узнать это.

Основное преимущество официальных фреймворков для меня - это даже не документы, а скорее google. Сообщество. База знаний называется Интернет. Работая с внутренней структурой, иногда я чувствую себя "больным от Google", своего рода физическое воздержание, когда я хочу, чтобы Google искал какую-то проблему, но я знаю, что ничего не найду.

Ответ 7

Это действительно зависит от того, насколько вы амбициозны и сколько времени вам нужно вложить в него. Я разработал структуру для своей компании, которая отлично работает, и мы построили CMS поверх нее с чем-то вроде 30 установок, плавающих вокруг там с очень небольшим количеством проблем. (Наши другие разработчики используют его без проблем, и потому что они могут спросить меня, когда у них возникают проблемы, это часто облегчает отладку, потому что я знаю это как заднюю часть моей руки.)

Но не стоит недооценивать количество времени, затрачиваемое на его выполнение и его поддержание. Независимо от того, насколько хорошо вы думаете, что ваши идеи начинаются, вы поймете, используя это, что всегда есть улучшения, которые вы можете сделать. Множество из них. В конечном счете, поэтому я создал что-то обычай. Поскольку, когда я сталкиваюсь с новыми проблемами, я могу разработать новые решения, которые в конечном итоге улучшат гибкость структуры таким образом, который я могу диктовать.

Если вы решите пойти с сторонним вариантом, хотя (как правило, это самая лучшая идея), не используйте Code Igniter. Он был разработан для PHP 4 и чрезвычайно не хватает функций и общего стиля ООП.

Ответ 8

Если вы хотите разработать WebApp, я предлагаю вам: bonfire, который я нахожу полезным. Он основан на структуре CodeIgniter