semplice spiegazione PHP OOP vs procedurale?


106

Vorrei imparare PHP e voglio avere un'idea su OOP e procedurale. Ho letto altri blog e tutorial su OOP vs Procedural ma ancora non riesco a capire l'approccio.

OOP vs procedurale

  1. Quale dovrei imparare?
  2. Qual è la differenza nel codice? quali sono gli effetti?
  3. Come può un framework PHP aiutare nell'approccio OOP? (Vorrei imparare CodeIgniter)
  4. La procedura ha bisogno di un quadro?

Voglio davvero conoscere la differenza di codice di entrambi, la mia comprensione di OOP è che crei una classe come e può essere accessibile. (Non so se è corretto).

Grazie!



1
la faccia quando questo non è un unico collegamento molto lungo
Félix Gagnon-Grenier



Risposte:


279

Background: hai chiesto una "spiegazione semplice" che suggerisce:

  1. Vuoi una panoramica senza fronzoli senza gergo
  2. Vuoi qualcosa che ti aiuti a imparare dall'inizio
  3. Hai scoperto che non esistono due persone che rispondono mai alla domanda nello stesso modo , e questo crea confusione. Questo è il motivo per cui stai chiedendo una semplice spiegazione. Sì?

Risposta breve senza gergo:

  1. Molte spiegazioni introduttive saltano rapidamente in esempi "OOP del mondo reale". Questi possono tendere a confondere più che ad aiutare, quindi sentiti libero di ignorarlo per ora.
  2. Puoi pensare al codice sorgente semplicemente come a "blocchi" di funzionalità, che vengono salvati in singoli file.
  3. Esistono diversi modi per organizzare questi "blocchi"; a seconda di cose come le convenzioni del linguaggio di programmazione, il background e la formazione degli sviluppatori, o semplicemente le vecchie preferenze personali.
  4. La programmazione OOP e procedurale sono semplicemente due metodologie principali, generalmente riconosciute, per come organizzare e organizzare quei "blocchi" di codice.

Risposta lunga senza gergo:

Procedural vs OOP è solo un aspetto di una questione fondamentale della programmazione del computer: come rendere il tuo codice facile da capire e un pezzo di torta da mantenere professionalmente . Si può effettivamente scrivere codice "procedurale" che segue alcuni dei principi di OOP, quindi i due non sono necessariamente opposti.

La tua comprensione crescerà davvero una volta che imparerai altri linguaggi di programmazione orientati agli oggetti , tra cui PHP è un "nuovo ragazzo sul blocco".

Ecco una rapida panoramica di ciò che imparerai mentre sviluppi l'esperienza:

  • Puoi scrivere codice sorgente PHP che svolga attività utili
  • È possibile organizzare attività utili in "blocchi" di codice
  • Puoi pensare a "blocchi" di codice indipendentemente dai singoli file in cui vengono salvati
  • A volte quei "pezzi" di codice si comporteranno in modo diverso in base ai parametri che passi
  • I blocchi di codice che accettano parametri sono chiamati "Funzioni"
  • Le funzioni possono essere "raggruppate" insieme e ci sono diversi modi per farlo:
    • Ad esempio: potresti avere un solo grande file PHP con tutte le funzioni che hai scritto in tutta la tua vita, elencate in ordine alfabetico per nome della funzione
    • Ad esempio: potresti avere più file PHP con funzioni raggruppate per argomento [ad esempio, funzioni per la manipolazione di stringhe di base, funzioni per l'elaborazione di array, funzioni per input / output di file, ecc.]
  • OOP è un modo speciale di "raggruppare" le funzioni insieme in una "classe"
  • Una classe è solo un altro livello di " raggruppamento " del codice in modo da poterlo trattare come un tutto unificato
  • Una classe può essere pensata come un "frammento" di metodi e proprietà

    • i metodi sono semplicemente funzioni che sono logicamente correlate l'una all'altra in un modo significativo. Le parole "metodo" e "funzione" sono fondamentalmente due termini diversi per la stessa cosa.
    • le proprietà sono semplicemente valori di dati correlati alla classe. Si tratta di valori che sono intenzionalmente non isolati da nessuna funzione individuale, perché più di una delle funzioni nella classe dovrebbe avere accesso ad essi.
      • Ad esempio : se la tua classe ha un sacco di metodi per fare astronomia, le proprietà della classe potrebbero essere i valori di certi numeri famosi che tutti i metodi di astronomia devono conoscere (come Pi, la velocità della luce, la distanza tra pianeti specifici, eccetera.).
    • È qui che la maggior parte delle spiegazioni OOP diventano confuse perché si diramano in " esempi del mondo reale " che possono rapidamente diventare fuori tema . Spesso, "mondo reale" è un eufemismo per le prospettive ontologiche di un particolare individuo. Ciò tende ad essere utile solo una volta che hai già compreso il concetto abbastanza bene da insegnarlo a qualcun altro.
    • Per comprendere l'OOP senza confusione, puoi saltare gli esempi del "mondo reale" per ora e concentrarti solo sul codice. Una classe è semplicemente un modo per memorizzare funzioni (aka metodi) e proprietà (aka dati) come codice PHP in uno o più "blocchi" correlati in cui ogni singolo "blocco" si occupa di uno specifico argomento o parte di funzionalità. Questo è tutto ciò che devi sapere per iniziare.
  • Una classe è utile perché ti consente di organizzare il tuo codice ad un livello molto alto in un modo che ti semplifica la comprensione, l'uso e la manutenzione.

  • Quando qualcuno ha scritto molte funzioni e le ha organizzate in molte classi, e le ha fatte lavorare insieme in un modo interessante, impacchettano il tutto insieme e lo chiamano "Framework" .
  • Un Framework è solo il livello successivo più alto di "chunking" (inclusi lo stile di codifica e le convenzioni) su cui una o più persone concordano perché a loro piace il modo in cui il codice è organizzato e si adatta al loro stile di lavoro, preferenze, valori, piani dominazione, ecc.

Guarda anche


1
@dreftymac: avresti potuto fornirmi un feedback su cosa potrebbe essere migliorato nelle mie aggiunte, invece di cancellarlo goffamente dietro la schiena. Veramente. Accolgo con favore le critiche costruttive e vi invito a fare lo stesso.
Flavius

1
@ Flavius ​​OK. Gratitudine per lo sforzo e per aver dedicato un momento a fare aggiunte. Dopo averci pensato, sembra ragionevole che l'aggiunta che hai fatto meriti una risposta a sé stante.
dreftymac

2
Un'aggiunta: una classe è utile anche per raggruppare i dati delle funzioni in modo da non doverli passare nei parametri.
chiborg

1
+1 soprattutto per la tua definizione di "Framework". Ho sentito molte persone cercare di spiegare cos'è un framework e penso che il tuo sia il più facile da capire.
TecBrat

1
amico ... questa è la migliore spiegazione che ho letto su oop vs procedural e ho letto MOLTO! ottimo lavoro davvero efficace, semplice e diretto al punto. hai ragione le persone usano sempre esempi del mondo reale e non è un modo semplice per capire niente, è una schifezza!
thechrishaddad

25

OOP non è altro che un modello di progettazione. Se hai appena iniziato, impara le basi concentrandoti sull'approccio procedurale. Soprattutto, acquisire familiarità con i principi di base come loop, condizioni e chiamate di altre procedure.

Mentre crei il tuo codice procedurale, prendi l'abitudine aggiungendo metodi correlati all'interno di un singolo file sorgente. Impara a dividere le tue procedure in unità logiche e poi stai già iniziando a diventare orientato agli oggetti. Fondamentalmente, un oggetto non è altro che una raccolta di metodi correlati tra loro semplicemente perché operano sullo stesso insieme di dati. (Non parliamo di database qui, ma di dati dell'applicazione!)

OO viene utilizzato principalmente per rendere il codice più logico dividendo tutto in semplici blocchi. Combinando i blocchi giusti, ottieni un'applicazione completa. OO non è un proiettile d'argento o un martello d'oro che risolverà tutti i tuoi problemi. Ma quello che fa è rendere il tuo codice più facile da capire.

Inoltre, alcune persone riescono ancora a creare un disastro completo con gli oggetti, semplicemente trasformandoli in enormi superoggetti con centinaia di metodi. Tali oggetti non differiscono molto da un normale approccio procedurale, semplicemente a causa dell'enorme quantità di metodi combinati insieme senza alcuna logica reale. È un errore facile da fare quando le persone iniziano a fare OOP troppo velocemente.


3
Trovo che un po 'di codice OOP sia molto più confuso .. prova a guardare nella pancia di PrestaShop, per esempio.
AndrewC

Ottimo punto su Pretashop. Magento è esso stesso una bestia fumante, ma abbiamo deciso di rimanere con esso perché alternative come Pretashop o WooComm sono anche peggiori.
PKHunter

6

Dovresti imparare entrambi. Gli oggetti sono solo una delle tante possibili astrazioni esistenti, e l'astrazione è in definitiva ciò che riguarda la programmazione. Detto questo, inizia con cose procedurali, quindi aggiungi oggetti in un secondo momento, perché gli interni degli oggetti PHP sono comunque procedurali.

Per quanto riguarda i quadri; prima impara i fondamenti della lingua, scrivi programmi sperimentali usa e getta e simili. Successivamente puoi familiarizzare con i framework e prendere in considerazione se stessi se si trovano alcuni di loro utile in qualche contesto. Sicuramente non sono obbligatori.


6

Per aggiungere le ottime risposte sopra. Dovresti vedere l'OOP come una progressione naturale del tuo stile di codifica: quando inizi a scrivere un piccolo programma potresti dover mettere insieme un paio di righe di codice php, quindi raggrupparle in funzioni e più funzioni scrivi potresti sentire il bisogno per organizzarli meglio in classi. OOP lascia semplicemente la tua struttura ai tuoi codici, consentendo una migliore manutenzione del codice.


6

Php e oop procedurali utilizzano lo stesso codice php. Quindi l'unica differenza è che con la procedura, ti concentri su un compito e basta. In oop, organizzi il tuo codice utilizzando modelli o blocchi che possono essere riutilizzati in molte aree diverse del codice.

La risposta semplice è che, devi conoscere e capire php. Puoi impararlo su php.net. Una volta capito, puoi iniziare a organizzare il tuo codice in mandrini.

Il codice procedurale utilizza funzioni, variabili.

Una volta che hai capito le cose, puoi iniziare a organizzare le funzioni e le variabili in classi. Iniziamo a chiamare le funzioni come metodi e le variabili come proprietà.

In bocca al lupo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.