2012-02-21 20 views
20

Per la vita di me, non riesco a comprendere le "classi" in PHP.Ho scritto PHP senza "classi" per anni ... cosa mi manca?

Sono riuscito a scrivere siti Web grandi, scalabili e popolari senza di essi.

Cosa mi manca? (E come imparo?)

+17

oops. Manca OOP – NAVEED

+1

prova ad usare framework (zend, code igniter, ect.) In questo modo impareresti di più su classi, MVC e altro – Bert

+12

* Nothing *. La programmazione procedurale è un modo molto valido per scrivere programmi, e se funziona per te, è fantastico, continua a farlo. Usare gli oggetti invece è un modo diverso di pensare e lavorare, e se vuoi imparare, preparati a investire un po 'di tempo. –

risposta

11

Le classi aiuteranno a riutilizzare il codice e potenzialmente un'applicazione molto strutturata.

La programmazione procedurale può essere molto più veloce in termini di tempo di sviluppo e velocità di esecuzione.

OO la programmazione è il modo più tradizionale ma non sempre il modo migliore. C'è un libro chiamato PHP Objects, Patterns and Practice che è un'ottima lettura, copre le basi delle classi, perché e come usare, l'astrazione e modelli di design comuni come MVC. Copre anche test unitari e altre ottime pratiche per gli sviluppatori di php

+0

In aumento per suggerire che non è sempre il modo migliore. –

3

Tutti hanno risposto che mancano molto perché diciamo che hai un sito di galleria fotografica invece di scrivere funzioni e alla fine si finisce con un sacco di li

OOP sarebbe utile in:

  1. organizzazione del codice e la manutenibilità
  2. Aggiunge chiarezza, e ridurre la complessità
  3. sottolinea i dati su proce dures
  4. Codice modularità
  5. Codice riutilizzabilità (Credetemi è necessario che un sacco)
  6. particolarmente adatto per i database

non stavo usando OOP prima, ma ho iniziato e di essere onesto non molto tempo fa, e ho trovato molto utile in quei punti specialmente nella riusabilità del codice

Diciamo che ho un sito di galleria fotografica creerò una classe per gli utenti e questa classe farà CRUD su tutti la tabella utenti e una classe per le foto per fare il CRUD su tutte le fotografie tabella

Potrei anche fare una classe per fare tutto il CRUD per me senza specificare su quale tabella e quindi utilizzare l'ereditarietà per estendere tutto il CRUD nella mia classe gli utenti e la mia classe di fotografia

il punto in quanto è solo potessi scrivere i metodi CRUD una volta e poi ri-utilizzarlo in tutte le mie altre classi

Spero avrei risposto alla tua domanda

3

IMO, Se non si desidera separare il nostro codice html &; è meglio non usare le lezioni.

Avrete bisogno di loro in un ambiente framework (non necessariamente), e ne avrete bisogno se volete oggettivare i vostri dati, gestirli in questo modo.

ma se stai bene senza di essa, allora sei proprio bene :)

Quando si tratta di gestire un sistema molto complesso, con un sacco di diverse strutture dati, più di un i membri del team, ecc Tu e il tuo codice dovete essere organizzati molto bene e avrete bisogno di lezioni.

9

Il punto di classi (programmazione orientata agli oggetti) è che raggruppa i dati insieme al codice che opera su di esso. Se fatto bene, questo porta a un codice meno strettamente accoppiato e quindi più gestibile.

In pratica significa un minor numero di variabili globali (utilizzate direttamente o accessibili tramite metodi di produzione statici) e minori spostamenti di dati (ovvero firme di metodo più piccole).

Per un esempio concreto, guardare il Mysqli extension: ogni funzione ha una procedurale e una versione OOP, e la versione procedurale quasi ha bisogno sempre di avere un parametro in più "link" per dare contesto, wheras la versione OOP ottiene che contesto dall'oggetto corrente.

2

Buona domanda! Hai ottenuto il mio upvote!

Direttamente al punto:
Ti manca un mondo intero!

Ci sono molte metafore per descriverlo, ma non c'è niente di meglio della pratica - ovviamente lo si conosce dopo "anni" di programmazione!

Decidi un piccolo progetto e scrivilo in stile OOP. Allora avrai l'idea.

Prendi anche questo suggerimento: assegna un nome alle classi come nome del file (ad esempio "MyClass" -> "MyClass.php"). Facile da mantenere.

0

Probabilmente manca la verificabilità: immagino che le tue funzioni chiamino altre funzioni, che a loro volta potrebbero chiamare un'altra funzione, giusto? Quindi avrai problemi a testare una funzione isolata. Con OOP si assemblano "cumuli" di oggetti e si può scambiare ogni oggetto con uno "falso" (chiamato mock o stub) per un test. In questo modo, puoi testare ciascuna funzionalità separatamente. Pensa di essere in grado di testare il tuo output code senza bisogno di un database. Pensa di testare il tuo codice controller (il codice che elabora i parametri della richiesta e decide quali azioni intraprendere) senza bisogno di un server web.

+0

Questa risposta è completamente sbagliata. Suppone che le funzioni scritte chiamino altre funzioni. L'argomento per mock o stub si applica tanto agli input delle funzioni quanto ai metodi in una classe. In effetti, uno stile procedurale di codifica è più vicino a uno stile di programmazione funzionale in cui è meno di un passo per scrivere funzioni pure che sono infettivamente più verificabili. –

Problemi correlati