Чому Zend Framework настільки складний?


42

Я веб-розробник і маю досвід розробки декількох веб-додатків у PHP. У мене є ідея розробити продукт для себе і вирішила використовувати основу на базі MVC, тому що мені дуже подобається ідея MVC і як можна легко керувати та змінювати додаток без особливих труднощів.

Я вибрав Zend Framework, і це здається складніше, ніж вивчення нової мови програмування. Стільки речей відбувається одночасно, навіть щоб запустити невелику програму.

Так само ідея маршрутизації є дуже складною, оскільки є новою для основного програміста. Я знаю, що хлопці тут читають тисячі таких питань, як одне, про яке я задаюсь, але я не хочу вивчати Zend Framework за ніч. Я готовий приділити стільки часу, скільки потрібно, але дотепер це не має для мене сенсу. У бібліотеці Зенда є тисячі класів, але як нооб не знати, де використовувати специфічний клас і як ним користуватися? Мені все ще важко зрозуміти завантажувальну систему Zend Framework та її відображення. Я читаю посібник, дотримуюсь його, і все починає працювати, але я не знаю, як саме вони відбуваються.

Я досі не маю уявлення про те, як моделі, представлення та контролери працюють разом і як планувати додаток у Zend Framework. Якщо мова йде про core php, я точно маю на увазі, що робити, і чим легко перекласти їх у код, але в Zend Framework я не знаю, як перекласти свою ідею.


10
Якщо ви не новачок у MVC, перед тим, як використовувати будь-який повнорозмірний, самостійно вкажіть ліси MVC - вони не гарні для навчання.
treecoder

2
@greengit ось що я зробив!
Кайл Ходжсон

Zend Framework не є складним, він потребує небагато часу, щоб навчитися через погану документацію, але я можу переконатись, що це дуже потужна основа. Ми будуємо велике корпоративне програмне забезпечення на ZF2, а гнучкість у налаштуванні надзвичайна для ZF.
альбанкс

Відповіді:


38

Zend Framework важкий. Він не будувався як рамки початкового рівня, знання причетних концепцій передбачається 1 . Зважаючи на це, перша вимога до Zend Framework 2.0 - це зробити його трохи легшим:

Легкість кривої навчання

Наприкінці 2009 року ми провели опитування користувачів рамкових програм, щоб визначити, що вони використовують, які середовища вони використовують та які їх потреби. Головною проблемою, без жодної смуги, були труднощі вивчення рамки. Деякі з цих питань включають:

  • Складність у «першу годину» з рамкою.
  • Невизначеність щодо "наступних кроків" після швидкого початку.
  • Невідповідні API в самому вихідному коді. Один компонент може використовувати "плагіни", інший "помічники", а ще "фільтри".
  • Невизначеність того, де існують точки розширення, і як їх програмувати.
  • Плутанина щодо того, чи можуть вони використовувати Zend Framework лише як стек MVC або як окремі компоненти.

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

Оскільки ви все ще навчаєтесь, було б набагато корисніше створити власну архітектуру MVC. Расмус Лердорф в горезвісному 2 « The No-рамка PHP MVC рамка » блог дає дуже простий і чистий приклад MVC з допомогою процедурного PHP, без яких - або рамок або іншої бібліотеки третьої особи.

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

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

1 Найкращий опис, який я читав для ZF, - це те, що це рамка побудови рамки , а не програма. Його сильна потужність і надзвичайний перелік функцій не підходять для невеликих та середніх веб-сайтів. На жаль, не можу знайти, де я це прочитав.

2 Прочитайте застереження у верхній частині публікації щоденника.


Оновлення, натхнене коментарем @ Karpie:

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

У виборі рамки задіяно багато суб'єктивних факторів, і якщо будь-який інший фреймворк не має функціоналу, який вам абсолютно потрібен - і ви не можете писати самостійно, вам слід уникати ZF та використовувати рамки, які вважають вас більш природними.

Якщо ви знаєте поняття, рамки не повинні заважати.


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

@Karpie Мені це не важко, якщо чесно. Але це наче ідіоматично, тому, безумовно, підходить деяким розробникам краще за інших. Наприклад, мені це легше зрозуміти, ніж CodeIgniter, але це лише через мій особистий процес: я вважаю за краще читати код, ніж документацію, і код CI настільки повний лайно, і розум відключається. Але для більшості розробників CI набагато простіше вивчити, ніж ZF, і не всі згодні з тим, що код CI повний лайно. Важливо те, що рамки не повинні бути важкими у використанні, якщо там завжди є інші.
янніс

Я вважаю, що Zend Framework 1 досить легко зрозуміти. Але ви сказали , що ідея ZF2 було зробити його простіше , я відчуваю, що це набагато більш складним , ніж коли - небудь раніше.
купив777,

Все в ZF2 надмірно складне. Було б добре представити Zend "фреймворк" як колекцію модулів / бібліотек. Фактична основа відсутня. Немає шару моделі, тому вам або доведеться реалізувати свій власний, який зазвичай є безладом, або використовувати Doctrine, яка вимагає певної інтеграції. Щоб написати деякі одиничні тести, вам потрібно витратити смішну кількість часу на розшифровку посібника та написання (або намагання знайти в Інтернеті) деякого коду просто для завантаження ваших тестів. Хоча воно може будуватися навколо здорових понять, їх інтерпретація цих понять жахлива.
vladko

11

Мені не сподобалося відсутність виявлення, коли я почав використовувати Zend Framework, занадто багато класів покладаються на масиви, і вам доведеться шукати, які ключі ви можете / потрібно визначити.

Немає нічого поганого в тому, щоб мати чіткі набір методів або назвати парами, це може дуже довго допомогти в пошуку.

Рамка Yii ще гірша при подібних речах.


3
+1 Моя істотна причина несерйозного розгляду питання про поглинання ZF / ZF2 повинна бути потворною, автоматичною завершеною / натякаючою та інтелігентним ухиленням вкладених вкладених масивів. Це порушує мою особисту неприязнь до надмірного використання масивів у світі OO.
Гевін Хоуден

1
Точно так само і моя думка.
Даніель

Я не вважаю Yii 1 занадто важким. Можливо, це для мене. : P
Юджин Йосиф

5

Деякі проблеми з ZF, які роблять прикрою (і важко для початківців) працювати з:

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

Маршрутизатори непрочитаних, роздутих URL-адрес . Наприклад, для визначення найпростішої маршрутизації потрібно 9 рядків коду:

$route = new Zend_Controller_Router_Route(
    'archive/:year',
    array(
        'controller' => 'archive',
        'action'     => 'show'
    ),
    array('year' => '\d+')
);
$router->addRoute('archive', $route);

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

url(r'^archive/(?P<year>\d+)/$', 'archive.show')

Zend_Aclє складним для більшості випадків використання. Зазвичай у вас є автентифікація для ідентифікації користувача. І можливість легко обмежити доступ до деяких контролерів лише автентифікованим користувачам. Для багатьох випадків користувача цього достатньо. Для більш складного випадку в бізнес-логіці в контролері слід визначити, чи має користувач дозвіл на виконання певних дій. У ZF у вас немає можливості легко обмежувати доступ лише автентифікованим користувачам, стандартним способом є використання системи ACL та ролей, незалежно від того, наскільки просто ваші потреби насправді.

Подутий макет каталогу та файлів . Рекомендована структура каталогу виглядає приблизно так:

<project name>/
    application/
        configs/
            application.ini
        controllers/
            helpers/
        forms/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        services/
        views/
            filters/
            helpers/
            scripts/
        Bootstrap.php
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    library/
    public/
        css/
        images/
        js/
        .htaccess
        index.php
    scripts/
        jobs/
        build/
    temp/
    tests/

4

Zend Framework - це як купа незалежних бібліотек, які разом працюють як рамки. Дуже важко розробити щось, одночасно роз'єднане і «просте у використанні». "Легкий у використанні" я маю на увазі робити складні речі з кількома рядками коду.

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

Коли ви говорите, що не маєте поняття про те, як працюють моделі, перегляди та контролери, будь ласка, не звинувачуйте рамки. Він реалізує MVC, як і будь-який інший фреймворк, за винятком того, що він відокремлює модель від структури бази даних, яка в багатьох структурах реалізована в одному класі. Тож вам доведеться зіткнутися з безліччю класів, таких як Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset тощо.

Тому я вважаю, що Zend Framework є складнішим, оскільки він дуже нерозділений, і ви можете використовувати його класи в інших проектах, які не використовують ZF.


3

Zend Framework вимагає певного ґрунтовного обгрунтування в моделях OOP та дизайну. Зі свого досвіду я знаходжу лише досвідчених програмістів Java-JEE-Struts-Spring, які легко ознайомлюються із Zend Framework. Середньому розробнику PHP важко перетравити концепції та архітектуру, що стоїть за Zend Framework. Але дивіться ей! Zend Framework походить від компанії 'Zend', яка створює PHP в першу чергу. Тож йому потрібна думка, можливо, якщо не повага!


1
Расмус Лердорф створив php, zend є високим прихильником php. З чого я пригадую.
Сармен Б.

Там не погоджуються. Я Java Developer. Я не тільки легко знайшов шлях до ZF, але віддав перевагу іншим структурам.
jkushner

-2

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

Пам'ятайте, що той, хто говорить, що Зенд дуже безпечний і не може його зламати, - великий дурень. Zend також може легко зламати, якщо ви не використовували захист від ін'єкцій Mysql. Я хотів би запропонувати вам визначити свої власні функції, а потім розділити свої файли в різних каталогах, щоб вони були схожими на зразок MVC, зберігаючи свої функції, класи та інший основний матеріал в одному каталозі, який називається контролером, а потім додавати веб-сторінки в інший каталог, де вам потрібно щоб включити всі ті файли функцій, які цей каталог буде знати як view. розміщуйте файли javascript та css в різних каталогах, які будуть відомі як модель.

Пам’ятайте, що в цьому світі багато людей завжди наполегливо працюють над тим, щоб зробити щось складніше, бо вони самі складні для розуміння.

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


-6

Принаймні, "швидкий старт" повинен бути простішим, щоб зробити рамку дружньою ..... якщо ви віддаєте перевагу щось складніше як кращу річ, то я б сказав "ZF - найкраща рамка PHP", інакше НЕ. Я завантажив ZF-2 і випробував його (чесно кажучи, я новачок у ZF). Сумно в тому, що в Інтернеті я досі не знайшов міцного "посібника з швидкого початку" з простим Проектом Скелет. Все, що я шукаю, - це простий спосіб включення бібліотечних файлів та створення папки проекту з функціями MVC. Я використовував Codeigniter, Cake php, Yii, але я вважав це досить недружелюбно. Так, я знаю, що Zend оновлює PHP, але це не означає, що це найкращий фреймворк або все, що ви скажете.


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