Perché Zend Framework è così complicato?

42

Sono uno sviluppatore web e ho esperienza nello sviluppo di diverse applicazioni web in PHP. Ho un'idea di come sviluppare un prodotto per me stesso e ho deciso di utilizzare un framework basato su MVC perché mi piace molto l'idea di MVC e come si possa facilmente gestire e modificare l'applicazione senza alcuna difficoltà.

Ho scelto Zend Framework e sembra più difficile che imparare un nuovo linguaggio di programmazione. Ci sono così tante cose che vanno in una volta anche per eseguire una piccola applicazione.

Allo stesso modo l'idea del routing è molto complessa in quanto è nuova per un programmatore principale. So che i ragazzi qui hanno letto migliaia di domande come quella che sto chiedendo, ma non cerco di imparare Zend Framework durante la notte. Sono disposto a dare tutto il tempo necessario ma fino ad ora non ha senso per me. Esistono migliaia di classi nella libreria Zend, ma come potrebbe un noob sapere dove usare una classe specifica e come usarla? Sto ancora trovando molto difficile capire il bootstrap di Zend Framework e la sua mappatura. Leggo il manuale, lo seguo e le cose iniziano a funzionare, ma in realtà non esattamente come stanno realmente accadendo.

Inoltre, non ho ancora idea di come modelli, viste e controllori lavorino insieme e come pianificare un'applicazione in Zend Framework. Quando si tratta di core php, ho esattamente l'idea nella mia mente su cosa fare e poi tradurli facilmente in codice, ma in Zend Framework non so come tradurre la mia idea.

    
posta Umair Abid 06.12.2011 - 06:26
fonte

7 risposte

38

Zend Framework è difficile. Non è stato costruito come framework entry level, si presume che la conoscenza dei concetti coinvolti sia 1 . Detto questo, il primo requisito per Zend Framework 2.0 è renderlo un po 'più semplice:

Ease the learning curve

In late 2009, we did a survey of framework users to determine what they use, what environments they use, and what their needs are. The top issue, bar none, was the difficulty of learning the framework. Some of these issues include:

  • Difficulty in the "first hour" with the framework.
  • Uncertainty about the "next steps" following the quick start.
  • Inconsistent APIs in the source code itself. One component may use "plugins," another "helpers," and yet another "filters."
  • Uncertainty about where extension points exist, and how to program for them.
  • Confusion over whether they can use Zend Framework only as an MVC stack or as individual components.

Quindi non è solo per te, è difficile per tutti - leggi l'intera pagina wiki, ci sono alcune cose che vengono identificate come inutilmente complesse. Ma anche se il requisito di cui sopra è soddisfatto, ancora non diventerà un framework entry level, il che significa che non è un framework su cui dovresti imparare, ma che dovresti usare quando hai effettivamente compreso i concetti coinvolti. / p>

Dato che stai ancora imparando, sarebbe molto più prezioso costruire la tua architettura MVC. Rasmus Lerdorf noto 2 "La post sul blog senza quadro PHP MVC "fornisce un esempio molto semplice e pulito di MVC tramite PHP procedurale, senza alcun framework o altra libreria di terze parti coinvolta.

Ma se vuoi davvero imparare con un framework, dovresti considerare un micro framework invece di uno completo. Slim ha un codice molto piccolo, pulito e accuratamente testato e dovrebbe essere l'ideale per l'apprendimento. Non ho giocato con nessun altro framework micro, dovresti fare le tue ricerche e decidere quale è meglio per te.

E per un'introduzione al routing rapida e sporca, vedi la mia risposta a questa domanda . Non è un concetto molto difficile da comprendere, ma Zend Framework lo fa apparire come molto più di in realtà è .

1 La migliore descrizione che ho letto per ZF è che si tratta di un framework building framework , non di un'applicazione. La sua potenza cruda e l'estrema lista di funzionalità non sono adatte per siti web di piccole e medie dimensioni. Sfortunatamente non riesco davvero a trovare dove leggo.

2 Leggi la dichiarazione di non responsabilità nella parte superiore del post del blog.

Aggiornamento, ispirato al commento di @ Karpie:

Un framework non dovrebbe essere difficile, l'intero punto di un framework è rendere le cose più facili. È possibile che anche con una solida conoscenza dei concetti coinvolti, ZF non sia adatto a te.

Ci sono molti fattori soggettivi coinvolti nella scelta di un framework e, a meno che ogni altro framework manchi di funzionalità di cui hai assolutamente bisogno e non puoi scrivere da solo, dovresti evitare ZF e usare un framework che ti sembra più naturale .

Se conosci i concetti, la struttura non dovrebbe intralciarti.

    
risposta data 06.12.2011 - 06:57
fonte
11

Non mi piaceva la mancanza di rilevabilità quando ho iniziato a utilizzare Zend Framework, troppe classi si affidano agli array e devi cercare quali chiavi puoi / devi definire.

Non c'è niente di sbagliato nell'avere metodi di set chiari o params nominati, farebbe molto per aiutare con la scopribilità.

Il framework Yii è ancora peggio con questo genere di cose.

    
risposta data 06.12.2011 - 15:37
fonte
5

Alcuni problemi con ZF, che rendono fastidioso (e difficile per i principianti) con cui lavorare:

ORM non incluso . Si potrebbe pensare che questo dovrebbe essere molto alla base del moderno framework MVC, tuttavia ZF viene fornito solo con Zend_Db_Table , che è ridicolmente basso livello. Puoi usare Doctrine, ma poi sei da solo, non è in alcun modo integrato con ZF.

Router di URL illeggibili e illeggibili . Ad esempio ci vogliono 9 linee di codice per definire il routing più semplice:

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

Dato quantità di domande relative a questo è tutt'altro che semplice per la maggior parte delle persone. Inoltre, non posso aiutarlo e confrontarlo con Django, dove l'equivalente di sopra sarebbe

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

Zend_Acl è un modo complicato per la maggior parte dei casi d'uso. Normalmente avresti l'autenticazione per identificare l'utente. E un'opzione per limitare facilmente l'accesso ad alcuni controller solo agli utenti autenticati. Per molti casi utente è sufficiente. Per un caso più complicato, sarebbe compito della logica aziendale nel controller determinare se l'utente ha le autorizzazioni per eseguire determinate azioni. In ZF non hai la possibilità di limitare facilmente l'accesso solo agli utenti autenticati, il modo standard è quello di utilizzare ACL e il sistema dei ruoli, indipendentemente dalla semplicità del tuo bisogno.

Directory e layout di file gonfiati . La struttura di directory consigliata ha il seguente aspetto:

<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/
    
risposta data 29.04.2013 - 17:44
fonte
4

Zend Framework è come un mucchio di librerie indipendenti che insieme funzionano come un framework. È molto difficile sviluppare qualcosa allo stesso tempo disaccoppiato e "facile da usare". Per "facile da usare" intendo fare cose complesse con poche righe di codice.

Quindi, iniziare con Zend è più difficile di altri framework, come CakePHP. Ma ho anche più facile estendere e personalizzare la tua applicazione senza codici sporchi. Zend segue anche gli standard e gli schemi di progettazione in tutto il suo codice, quindi una volta letto il codice quadro, puoi indovinare cosa sta succedendo.

Quando dici che non hai idea di come modelli, viste e controllori lavorino insieme, per favore, non incolpare la struttura. Implementa MVC come qualsiasi altro framework, tranne che separa il modello dalla struttura del database, che in molti framework sono implementati nella stessa classe. Quindi affronterai molte classi come Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset, ecc ...

Ecco perché penso che Zend Framework sia più complicato, perché è molto disaccoppiato e puoi usare le sue classi in altri progetti che non usano ZF.

    
risposta data 06.12.2011 - 22:04
fonte
3

Zend Framework richiede alcuni solidi fondamenti in OOP e Design Patterns. Dalla mia esperienza, trovo solo programmatori esperti Java-JEE-Struts-Spring che acquisiscono familiarità con Zend Framework. Lo sviluppatore PHP medio ha difficoltà a digerire i concetti e l'architettura di Zend Framework. Ma vedi hey! Zend Framework viene dalla società 'Zend' che crea PHP in primo piano. Quindi ha bisogno di un po 'di riflessione forse se non di rispetto!

    
risposta data 27.02.2012 - 20:15
fonte
-2

Credo che zend sia solo per complicare le cose, MVC è solo una frode che logicamente funziona come un semplice PHP. ma lo stai sviluppando di fronte a MVC, come la separazione dei file in diverse directory.

Ricorda che chi sta dicendo che Zend è molto sicuro e incapace di hackerare, è un grande pazzo. Zend può anche facilmente hackerare se non hai usato le protezioni per iniezione Mysql. Vorrei suggerire di definire le tue funzioni, quindi separare i file in diverse directory per renderlo simile a MVC salva le tue funzioni, classi e altro materiale principale in una directory chiamata controller quindi aggiungi le tue pagine web in diverse directory in cui è necessario includere tutti i file di funzione che questa directory conoscerà come vista. posiziona i tuoi file javascript e css in diverse directory che saranno conosciute come modello.

Ricorda che, in questo mondo, molte persone lavorano sempre duramente per rendere le cose più complicate, perché sono complicate da capire.

PHP è la lingua che hai imparato nel libro e dagli insegnanti. Zend non è solo un framework, per rendere le cose complicate per i tuoi clienti. così ogni volta che il cliente ha bisogno di modifiche, tornerà dagli sviluppatori reali e quegli sviluppatori ti faranno pagare più soldi. Zend è tutelato, è solo una bugia, un solo errore come la semplice codifica del php può causare l'hacking del sito web.

    
risposta data 29.04.2013 - 13:54
fonte
-6

Almeno il "quick start" dovrebbe essere più semplice per rendere un framework amichevole ..... se preferisci qualcosa di più difficile come una cosa migliore allora direi "ZF è il miglior framework PHP", altrimenti NON . Ho scaricato ZF-2 e l'ho provato (onestamente sono novizio di ZF). La cosa triste è che non ho ancora trovato una solida "guida rapida" con un semplice Project Skeleton su Internet. Tutto quello che sto cercando è un modo semplice per includere file di libreria e creare una cartella di progetto con funzionalità MVC. Ho usato Codeigniter, Cake php, Yii ma l'ho trovato piuttosto ostile. Sì, so che Zend aggiorna PHP, ma ciò non significa che sia il miglior framework o qualunque cosa tu voglia dire.

    
risposta data 10.10.2012 - 14:27
fonte

Leggi altre domande sui tag