Пожалуйста, не ссылайтесь на существующую платформу
Я не буду, я начал писать свои собственные в целях обучения и взглянул на некоторые основные структуры, и даже с моими ограниченными знаниями вижу в них так много ошибок и плохих идей.
Они созданы хардкорными разработчиками, а не конечными пользователями.
Я ни в коем случае не говорю, что мог бы писать лучше, чем "большие мальчики", но я (наряду с большинством из вас, я думаю) мог указать, почему некоторые вещи они делают плохо, даже если только потому, что они не конечный пользователь / не для разработчиков ...
Интересно, как поживает ваша структура, где-то 6 лет?
Вы все еще работаете над этим? Ты остановился?
Если вы напишите свой собственный фреймворк
Возможно, это немного поздно для вас, но для всех остальных написание собственной структуры - фантастическая вещь для изучения .
Если, однако, вы хотите написать что-то другое, кроме целей обучения, потому что вы не можете отработать тот, который вы используете, или потому что он слишком раздутый, то не надо!
Поверьте мне, и не обижайтесь, вы бы здесь не обдумали это, если бы вы были достаточно знающим разработчиком, чтобы делать это успешно!
В прошлом году я хотел изучать ООП / классы и более продвинутый PHP.
И написание моей собственной структуры было лучшим, что я сделал (на самом деле все еще делаю), поскольку я узнал намного больше, чем я ожидал.
На протяжении всего пути, который я выучил (назвать несколько):
- ООП / Классы многие лучшие практики, которые идут с ним - такие как
Инъекция зависимостей, SRP
- Шаблоны проектирования, которые помогут вам написать код и структурировать вашу систему
таким образом, что это делает многие вещи логичными и легкими. Для
пример см. Wiki - SOLID
- * 1038 Namespaces *
- Обработка ошибок PHP и все функции, которые обеспечивает
- Более надежное (и лучшее) понимание MVC и как его применять
соответственно (поскольку нет четкого способа его использования, просто направляющие
и лучшие практики).
- Автозагрузка (классов для ООП)
- Лучше стиль написания кода и более структурированный макет, и лучше
навыки комментирования
- Соглашения об именах (это интересно делать самостоятельно, даже если на основе
общие практики).
И многие другие базовые вещи PHP, с которыми вы неизменно сталкиваетесь при чтении чего-либо.
Все это не только значительно улучшило мое понимание PHP и того, что с ним связано, до более продвинутого уровня, но и некоторые коммерчески / широко используемые методы и принципы.
И все это укрепило мою уверенность в использовании PHP в целом, что, в свою очередь, облегчает изучение.
Зачем писать каркас для изучения всего этого
Когда вы начинаете, вы изучаете основы - A (переменные), затем B (как написать базовую функцию) и т. Д.
Но это не займет много времени, когда вы пытаетесь изучить более продвинутые вещи, что для изучения и использования D и E, вы также должны изучить и понять F, G, H и J, и знать тех, кто вам нужен знать K, L и M, и чтобы узнать части L и M, вам сначала нужно понять N и O ...
Это становится минным полем, так как попытка научиться чему-то приводит к необходимости сначала изучить несколько других вещей, а эти другие вещи часто вызывают потребность в понимании различных других вещей.
И вы окажетесь в миле от того места, где вы начали, ваш разум покалывает и стреляет из него искрами, и открывается около 20 вкладок с различными продвинутыми PHP-вещами, ни одна из которых вас не устраивает на 100%.
Но со временем, с практикой и, безусловно, самоотверженностью, все это встанет на свои места, и вы оглянетесь назад на код, даже набор файлов / классов, и подумаете: «Я написал это…»?
Написание фреймворка очень помогло с этим "минным полем", потому что:
- У меня были конкретные задачи, которые привели к необходимости учиться и
реализовать другие вещи, но конкретные вещи. Это позволило мне сосредоточиться
на меньшее количество вещей одновременно, и даже когда что-то
различные другие вещи, вы можете вернуть его туда, где вы начали
потому что вы работаете над чем-то конкретным. Вы можете сделать это с
любое обучение, но если у вас нет какой-либо цели или конкретной задачи, вы
сосредоточиться на, вы можете легко отвлечься и потеряться в эфире
вещей для изучения.
- У меня было что-то практичное для работы. Часто читая учебники о
класс животных, и как классы кошек и собак расширяют животных и т. д.,
может быть запутанным Когда у вас есть реальная жизненная задача в вашем своем
фреймворк, например, как мне управлять XYZ, то вы можете узнать, как
классы работают легче, потому что у вас есть метод проб и ошибок и солидный
требование, которое вы понимаете, потому что вы создали
требование! Не только теоретическое чтение, которое ничего не значит
обычно.
- Я мог бы положить это, когда мой ум был взорван, хотя, как это было мое
рамки (мой монстр Франкенштейна в начале: P) я хотел
нажмите на, потому что это было интересно, и личная цель учиться
и сортировать следующий этап, чтобы решить проблему, с которой я застрял и т. д.
Ты можешь делать это как хочешь. Возможно, это не лучшая практика, но пока вы пытаетесь выучить лучшие практики, со временем вы будете совершенствоваться и, вероятно, будете легче, чем просто читаете учебники, потому что вы контролируете, что и как вы делаете что-то. * * 1092
Подождите, я не должен заново изобретать колесо, хотя
Ну, во-первых, вы не можете заново изобрести колесо, это невозможно, так как вы просто сделаете колесо.
Когда люди говорят: «Не изобретай велосипед», они, конечно, подразумевают «уже есть фреймворки», и, если честно, они написаны опытными разработчиками.
Это не значит, что у фреймворков нет проблем или проблем, но в целом они довольно надежные, безопасные и хорошо написанные.
Но утверждение бессмысленно в отношении написания вашей собственной структуры!
Написание собственных рамок для учебных целей действительно полезно.
Даже если вы планируете использовать его в коммерческих целях или для собственного веб-сайта, вы не просто «заново изобрели колесо», вы сделали что-то еще.
Ваш фреймворк не будет похож на другие, у него не будет много функций и возможностей, которые могут быть для вас главным преимуществом!
Пока вы понимаете лучшие практики безопасности и т. Д., Потому что вы можете думать, что пишете отличную систему, которая очень быстра и без всех раздуваемых других фреймворков, но на самом деле у вас есть дыры в местах, в которые кто-то мог заползти ...
Но проект для обучения, который вы не используете в Интернете, идеален - или используйте его, в конце концов, когда вы достаточно продвинуты, чтобы знали , что это безопасно!
Учитывая все вышесказанное, вы должны написать свой собственный фреймворк IF:
- Тебе это не нужно в ближайшее время! Это занимает много времени, как
Есть так много аспектов, которые нужно учитывать, учиться и проб и ошибок
приводит к рефакторингу (сначала много!)
- Вы готовы читать, кодировать, тестировать, изменять, читать, кодировать и читать
еще немного. В интернете много полезных советов для продвинутых
PHP, большая часть которого сначала сногсшибательна, как чтение всего дизайна
узоры. Но они в конечном итоге имеют смысл, и в конечном итоге помогают вам
решать проблемы, с которыми вы сталкиваетесь, и как делать
основа.
- Желание тратить время и пытаться улучшить, и голова
к наилучшей практике, особенно с безопасностью. Проблемы со скоростью не должны быть проблемой с небольшой платформой, и, кроме того, если у вас достаточно приличная система, вы можете обычно проводить рефакторинг и делать улучшения скорости. обычно, если у вас есть серьезные проблемы со скоростью, это означает, что вы выбрали интенсивные операции, которые обычно можно решить, выполнив это другим способом.
.
Без предыдущего опыта или глубоких знаний PHP вы, вероятно, потратите некоторое время на написание фреймворка, дальнейшее чтение и знание покажут вам, что ваш подход искажен, и поэтому вы можете удалить все и начать заново.
Не унывай от этого.
Я сделал именно это, так как я узнал очень много продвинутых шаблонов и способов ведения дел в течение первого месяца, я оказался там, где рефакторинг был бесполезен, и единственным вариантом был чистый холст с совершенно новым подходом.
Тем не менее, это было довольно приятно, так как я увидел гораздо лучшую структуру, принявшую форму, и я увидел, что начало не только улучшать основы фреймворка, но и понял, что это потому, что я лучше понимал продвинутый PHP.
Просто сделай это! Просто убедитесь, что у вас есть план того, что вы хотите сделать, прежде чем даже написать какой-то код.
Серьезно, запишите на бумаге, как вы собираетесь загружать проверку ошибок, у вас будет автоматическая загрузка или включать файлы при необходимости? Собираетесь ли вы иметь механизм централизованной загрузки, который создает экземпляры классов, когда они вам нужны, или какой-то другой метод?
Что бы вы ни делали, и на какой бы стадии вы ни находились, если вы собираетесь на новую территорию, спланируйте это сначала. Вы будете рады этому, когда столкнетесь с кирпичной стеной, вернетесь к своим планам и поймете небольшое отклонение от ваших планов разрешит это.
В противном случае вы просто получите беспорядок, и у вас не будет плана или способа переназначить его, чтобы решить текущую проблему или требование, с которым вы столкнулись.