Обратите внимание, что ord()
не дает Вам значение ASCII по сути; это дает Вам числовое значение символа в любом кодировании, в котором это находится. Поэтому результат ord('ä')
может быть 228, если Вы используете латинский 1, или это может повысить TypeError
при использовании UTF-8. Это может даже возвратить кодовую точку Unicode вместо этого при передаче его unicode:
>>> ord(u'あ')
12354
У меня есть сайт codeigniter, содержащий около 11K файлов.
Я сильно изменил базовую структуру codeigniter для своих нужд. Например, у меня есть 3 приложения с 3 передними контроллерами, использующими одни и те же системные файлы. Я использую smarty в качестве движка для создания шаблонов. У меня есть богатые веб-приложения PHP, работающие на jquery и prototype / Scriptaculous. Я использую проверку формы, аутентификацию, активную запись, электронную почту и т. Д. И т. Д.
Мой опыт пока очень положительный.
Как только вы получите (настоящий) шаблонизатор, такой как smarty, подключенный к Codeigniter, у вас будет вся мощь, необходимая для средних и крупных сайтов.
Вы должны подумать об организации своего сайта в большие «метагруппы» как структура «контроллер» в Codeigniter ожидает такого поведения. ('блоги', 'товары', ' форумы и т. д.)
Для CI очень легко добавлять плагины.
Фреймворк упрощает множество ерунды, в противном случае вам пришлось бы вручную писать код. Это быстро, просто и настраивается.
Моя единственная большая претензия к CI до сих пор заключается в том, что он не очень хорошо поддерживает работу с несколькими приложениями. Макет по умолчанию предполагает, что у вас запущено 1 приложение. В моем случае у меня есть глобальное приложение с глобальным файлом, который можно использовать во всех запущенных приложениях. Однако это можно было бы решить более элегантно. Вдобавок вам нужно добавить немного лишнего шума для переключения между фронтальными контроллерами.
Мой любимый аспект CI - это простота активной записи в MySQL DB. Крайне просто установить соединение с БД и запустить активные запросы записи.
Я бы сказал, что начать с этого довольно легко. Просто убедитесь, что вы ходите по магазинам и выясняете, как подключить smarty к своему приложению. Вы МОЖЕТЕ использовать представление Codeigniter по умолчанию, но в ту минуту, когда вам понадобится логика if / else в ваших шаблонах, вы облажаетесь.
Я настроил области «шаблоны» и «контент» в каждом приложении, которые я могу заполнить с умными шаблонами и статическим контентом соответственно. Остальное я могу извлечь из соединения с БД.
. Это действительно вопрос, на который можете ответить только вы. Когда вы говорите о «большой системе», вы можете иметь в виду что-то широко используемое (просмотры страниц и т. Д.) Или что-то, что включает в себя огромный набор бизнес-правил, но используется только несколькими людьми. Должно ли приложение быть быстрым, или вы можете сбалансировать его нагрузку на нескольких серверах?
Ваш комментарий «PHP - это фреймворк на C» довольно не в порядке, IMO. Нет, PHP не так быстр, как C. Но он НАМНОГО лучше справляется с веб-запросами. PHP используется на некоторых из крупнейших сайтов в мире - Facebook изначально был полностью написан на PHP. Yahoo довольно часто использует PHP. Таким образом, PHP достаточно быстр практически для всех, особенно с учетом того, что база данных почти всегда будет вашим узким местом. Если ваши PHP-приложения работают медленно, вы можете использовать memcache / балансировщики нагрузки / разместить больше серверов приложений в вашей сети. Довольно легко масштабировать часть PHP.
Я могу вам сказать краткое сравнение с другими фреймворками. Я использовал CI в ограниченных развертываниях, в основном помогая другим людям, но то, что я видел, мне понравилось. Это дает вам преимущество в скорости выполнения по сравнению с чем-то вроде CakePHP, но увеличит время разработки (поскольку самая большая сила Cake - это его способность быстро разрабатывать и развертывать). По скорости он довольно сравним с Zend или Symfony, что все еще примерно в 5-7 раз медленнее, чем просто писать необработанный PHP самостоятельно.
Подводя итог по различным фреймворкам (NB: мое мнение ниже):