Коли мені потрібно використовувати рамку? [зачинено]


15

Я новачок у веб-програмуванні і в цей час я вчуся про PHP. Мені хотілося б знати, коли мені потрібно використовувати рамку PHP, наприклад CakePHP? Які речі пропонують мені ця та інші подібні рамки PHP? І чи справді важливо використовувати рамки, щоб бути професіоналом?

  • І чи можу я створити власну структуру, щоб забезпечити вподобані мені функції?

3
Коли ви зрозумієте, що він пропонує, і зможете обійти його за потреби, скористайтеся рамкою [xyz]. Рамки - це інструменти, призначені для кваліфікованих людей, які вміють ними користуватися та розуміють обмеження свого вибору. Не за будь-яких обставин вивчайте мову, вивчаючи лише рамки. Це як свідомо вимикати пальці ніг або периферичний зір. Підказка: сесії ведуть себе дивно залежно від того, якою рамкою PHP ви користуєтесь. Будьте обережні :)
Tim Post

Відповіді:


10

Коли вам не подобається PHP, ви можете почати використовувати рамку. І завжди слід їх використовувати:

  1. Це набагато, набагато швидше, ніж перекодувати все
  2. Це полегшує зміни, як-от зміна баз даних або зміна поглядів
  3. Робота з іншими людьми буде також простішою, оскільки вони часто використовуються для використання у структурі MVC

Ви можете створити власну структуру, але я її точно не рекомендую. Це складно, там вже є багато хороших рамок, і навряд чи ви знайдете відсутні функції. Крім того, вони часто пропонують способи додати до них свої особливості, не потребуючи створення цілком нових.


2
+1 для, коли вам не подобається PHP, ви можете почати використовувати рамку. Ваш пункт 3) працює добре, лише якщо рамки дуже схожі. Я додаю "не створюйте рамки, перш ніж активно використовувати кілька різних"
peterchen

8
Я абсолютно не згоден із твердженням, що "ви завжди повинні ними користуватися". Вони не підходять для кожного проекту і часто в кінцевому підсумку зробити зміни більш важкими . Утиліти набагато цінніші за рамки.
Ніколь

+1 для @NickC, я не міг погодитися. Деякі рамки стверджують, що вони динамічні і легко змінюють речі, але тоді ви доходите до певного моменту, і ви просто ... не можете. Я багато чого роздував про таке: :)
Стів Хілл

Я погоджуюся, що MVC - це дуже хороший спільний досвід, який дозволяє іншим людям вступати у ваш код із меншою кривою навчання при правильному використанні. Але MVC - це сяюча зірка, структура (або її відсутність) - це лише реалізація.
Тім Пост

Все це теоретично і на практиці не спрацьовує. Рамки PHP, швидше за все, ускладнюють усі ці речі. Середня заявка, написана нуля, потребує приблизно п'ятисот до п’яти тисяч рядків рамкового коду. Це приблизно в середньому за тиждень роботи. Якщо це більше, ви, напевно, або пишете бібліотеку, або створюєте внутрішню платформу.
jgmjgm

9

Створіть кілька сторінок без фреймворку ... ви, по суті, почнете писати власні рамки методом проб і помилок. Після цього перейдіть до рамки та насолоджуйтесь, скільки часу ви економите. Спроба побудувати власну структуру може навчити вас чомусь і допоможе оцінити рамки, які вже є там.

Коли я вперше потрапив у PHP, я вважав, що рамки є складною тратою часу. Зараз я використовую CodeIgniter навіть для простих проектів. Щоб піднятися та запустити, вам потрібно близько 1 хвилини. У вас уже є багато чудових бібліотек. І, як згадувалося в попередньому плакаті, більшість фреймворків є розширюваними, тому ви завжди можете додати будь-яку функціональність.


2
Але як я можу пізніше переконатися в тому, що код в рамках точно такий, як я хочу? Я маю на увазі, кожен програміст має свій стиль, правда? Що про рамки !!
Гома

1
@Goma Що про мову? Я ще не знайшов жодного, який би робив все так, як я цього хочу. Рамка просто додає щось дуже-дуже схоже (сподіваємось на дещо вищий рівень абстракції). Серйозно, кодування полягає не в тому, щоб "все виглядати / вести себе / бути точно так, як я хочу". Це про те, щоб створити щось корисне, код - це лише відповідальність, з якої ми себе обтяжуємо, тому що переваги переважають за витрату цього коду в першість.
Крістофер Кройціг

І зараз @TaylorOtwell є творцем Laravel ...
Hos Mercury

4

Як сказав Niphra , почніть використовувати рамки лише тоді, коли ви можете використовувати PHP без фреймворку (тобто мати доступ до бази даних, надсилати заголовки та вміст, обробку рядків, маніпулювання даними тощо). Що стосується ваших питань:

  • Коли мені потрібно використовувати рамку PHP, наприклад CakePHP? Коли ваш проект перевищує декілька файлів PHP; в момент, коли ви почнете сильно розділяти логіку на різні елементи та функціонувати модуляцію / обмін (сеанси тощо), коли вам слід використовувати рамку.

  • Які речі пропонують мені ця та інші подібні рамки PHP? Абстракція; замість прямої взаємодії з базою даних ви можете використовувати об'єктно-реляційне картографування (ORM) для управління структурою та зв’язками між вашими даними в базі даних. Більшість фреймворків на багатьох мовах надають ORM для полегшення взаємодії з шаром бази даних вашої програми. Аналогічно, рамки часто розділяють шари реагування на взаємодію користувачів. Найпоширеніший поділ - це парадигма контролера моделей (MVC), яка, коротко кажучи, конспектує логіку бази даних у Model (інтерфейс до ORM, у багатьох випадках), обробляє запити та взаємодіє з Моделями в контролер, і надання фактичного HTML / PDF / зображення / тощо. в Вид. Рамки часто надають інші інструменти, такі як маршрутизація (щоб забезпечити складну обробку URI запиту (EG: Картографування запиту ""http://example.com/users/1 "для контролера Користувачі, який потім шукає модель користувача з ідентифікатором 1) та абстрагування сеансів та інших основних структур.

  • І чи справді важливо використовувати рамки, щоб бути професіоналом? Не обов'язково; рамки полегшують життя; але не потрібно використовувати його, щоб бути професіоналом. Рамки забезпечують зручну абстракцію та стандартизацію, але вони не є вимогою в більшості випадків.


3

Прочитавши деякі відповіді, я хотів би спершу сказати, що у вас часто не буває багато варіантів того, які рамки ви збираєтесь використовувати, чи збираєтесь ви використовувати її чи ні (як професіонал). Я не хочу вас залякати, але вам потрібно буде достатньо розвинути розуміння PHP, щоб дозволити перехід від однієї основи до іншої, а також використовувати більше одного фреймворку одночасно.

коли мені потрібно використовувати рамку PHP, наприклад CakePHP?

На це немає універсальної відповіді. Як професіонал, ви будете мати завдання вирішувати конкретні проблеми, і це буде вирішальним фактором для того, коли і що стосується кожного проекту, особливо якщо у клієнта є конкретний попит. Але загалом кажучи, ви завжди будете використовувати якусь форму фреймворку з PHP, якщо тільки ви не змінюєте чи не розширюєте раніше існуючу програму, яка має власні рамки (наприклад, Wordpress або PHPBB).

Які речі пропонують мені ця та інші подібні рамки PHP?

За словами Дірка, вони пропонують абстракцію. Це означає, що вони приймають загальні, багатоетапні процедури та намагаються зробити їх максимально простими та спрощеними. Коротше кажучи, вони намагаються представити рішення, що додають воду для звичайних завдань.

І чи справді важливо використовувати рамки, щоб бути професіоналом?

Взагалі кажучи, ні, не важливо використовувати рамки, щоб бути професіоналом. Але реально, кар’єри у вас не буде багато, якщо ви не знайомі як мінімум з кількома загальними рамками. PHP без фреймворку - це як C ++ без std-бібліотеки. Вам це не потрібно, і ви можете насправді зробити більше без нього, оскільки ви будете безпосередньо використовувати функцію побудови блоку нижчого рівня мови, але для того ж потрібно буде набагато більше часу.

І чи можу я створити власну структуру, щоб забезпечити вподобані мені функції?

Так. Насправді ви, ймовірно, зробите це, навіть якщо ненавмисно. Під цим я не маю на увазі розширений фреймворк "все для всіх", але більше схожий на пакет інструментів основних функцій та сценаріїв, які виконують завдання, не є загальними або загальними, щоб обробляти середній фреймворк. Шахта в основному складається з різних файлових систем, обробки процесів і rex-ex tid-бітів з кількома різними утилітами curl і stream / socket.


1

Як правило, у людини, яка років пробирала мої способи спілкування з базою даних та спілкування з Інтернет-API, і я зараз починаю використовувати фреймворки, використовуйте їх, коли ви принаймні розумієте, що вони роблять, якщо це можливо.

Не одразу переходьте на RedBean під час першого вживання з базою даних, спочатку працюйте з БД вручну. Таким чином ви маєте глибоке розуміння того, що ви насправді отримуєте та робите в БД, що дійсно може допомогти у масштабуванні. Тоді ви також можете самостійно вирішити, коли рамка, яку ви використовуєте, не робить те, що вам потрібно зробити.

Як тільки ви зрозумієте, що відбувається, проте скористайтеся рамкою! Це набагато полегшує справи. Crazyness зі зберіганням запиту потім цикл над результатами з mysql_fetch_assocвсі пішли, зводиться до кільком особам: $book = R::load( "book", $id ). Ви будете набагато продуктивнішими і зможете виправити майбутні помилки або набагато простіше додати майбутні функції.


1

Використовуйте рамку, коли ви досить добре знаєте основні технології, щоб знати, що рамка робить для вас, і чому це добре (або погано).

Рамка - це такий собі мета-інструмент, який дозволяє трохи швидше працювати з вашими інструментами (мовою, базою даних), не турбуючись про деякі деталі того, що ви робите, що добре, якщо ви дійсно знаєте своє інструменти.

Чого ти НЕ хочеш, щоб це сталося, це те, що ти вивчаєш рамки замість інструментів, і стаєш каналізованим певним способом виконання дій, і в кінцевому підсумку не справді опановуєш основні мови та концепції - це має бути інструмент, а не милиця.


1

Коли ви знову і знову виявляєте те, що робите те саме, огляньтесь і подивіться, чи є рамки, які роблять ті самі зайві речі, які б ви в кінцевому підсумку робили самостійно. Не використовуйте лише рамки через ажіотаж. Мені особисто подобається CodeIgniter та "рамки PHV MVC" без рамки Раммуса Лердорфа http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


Я написав кілька «без фреймворків», щоб полегшити додавання нових функцій в основному статичних (і величезних) сайтів, які просто неможливо легко перенести в будь-яку систему управління / публікації, тому вони мають своє використання. Але я б не прокатував свій власний проект для абсолютно нового проекту (я б просто застосував CI, якщо було запрошено рамки).
Тім Пост

@Tim Post Зазвичай на це питання ніколи не є чорно-біла відповідь. Все залежить від конкретного проекту, в оригінальній публікації не було деталізовано конкретного проекту.
програміст

1
Схоже, я отримав подальний голос від ревника, приємно!
програміст

Не моє :) Можливо, хтось відреагував на посилання, яке ви опублікували, але все-таки про це не вдавався детально.
Tim Post

@Tim Post Heh! Тому я обов’язково розділив обидва ці коментарі. : D
програміст

-1

Я рекомендую ретельно подумати, чому б ви використовували Framework x, y або z. Кожен фреймворк не лише забезпечує функціональність, який вам не доведеться реалізовувати, але й спосіб мислення. Подивіться на Spring, JEE, Rails або Django. Чотири рамки, що забезпечують достатню потужність веб-програми за короткий час.

Але всі чотири просувають власний спосіб мислення про те, як слід будувати веб-додатки. Якщо це не відповідає вашим потребам або не відповідає вашому аромату, вам буде важко продовжувати справи.

Це було дуже радикальним порівнянням, але, можливо, створення невеликої бібліотеки краще відповідає вашим потребам. Але знання рамок, безумовно, допоможе вам працювати в більшій кількості команд або знаходити нові робочі місця, оскільки це показує, що ви зацікавлені в розробці програмного забезпечення в цілому.


-2

Рамки завжди добре використовувати з початку руху. Це сприяє зручності використання коду, кращому читанню та економить трохи часу на розробку.

Я не дуже досвідчений з PHP, але я б заохотив будь-яке використання фреймворку.


Чому голоси "за"?
П’єр Преторіус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.