Come faccio a passare i dati in modo orientato agli oggetti in PHP?

11

Trovo che anche quando si lavora con un framework MVC (ad esempio CodeIgniter), ricorro regolarmente agli array annidati anziché agli oggetti.

Questo non segue la mia comprensione del bene orientato agli oggetti. Ad esempio, se dovessi eseguire il porting del codice su Java, non mi sognerei di passare array (o Vettori, o altro) in questo modo.

Mi chiedevo se questo è il modo appropriato per gestire i dati. C'è un motivo per cui gli array vengono passati in questo modo in PHP, o perché gli oggetti non vengono utilizzati? Qual è il modo migliore per trasmettere i dati?

    
posta Matthew 27.05.2011 - 23:08
fonte

4 risposte

8

Non confondere l'OO di Java con PHP. Java è un singolo linguaggio di paradigma che significa che fa solo OO. Il PHP d'altra parte è un linguaggio multi-paradigma, è possibile eseguire sia la programmazione funzionale o OO o entrambi.

Ora non esiste un'implementazione "cattiva" di OO. L'OO di Java non è un'implementazione definitiva che ogni altra lingua dovrebbe o deve seguire. Ci sono alcuni concetti definitivi e entrambi i linguaggi li implementano completamente a modo loro (Java dall'inizio, PHP dalla versione 5).

Quindi, per rispondere alla tua domanda: cosa CI fa e cosa stai facendo è giusto nel mondo PHP. Gli array di PHP sono una delle sue strutture più flessibili e utili e in realtà è una buona cosa usare gli array sugli oggetti quando i dati sono solo informazioni (non portare la logica con loro). Completamente il codice OO non è la stessa cosa di "solo codice OO".

Se stai iniziando con PHP, usa Java come riferimento per le buone pratiche OO, ma non limitare la tua comprensione di PHP a causa della cosa "Java lo fa diversamente". Puoi davvero rovinare entrambi, il paradigma non ti salverà se non ottieni i concetti.

Se in ogni caso trovi Java più di tuo gradimento (come preferenza personale) controlla Ruby per lo sviluppo web, sono un po 'più strettamente correlati.

    
risposta data 27.05.2011 - 23:18
fonte
2

Gli oggetti di utilizzo invece degli array solo perché gli oggetti non sono paradigmi OO, sono solo preferenze personali :)

Gli oggetti forniscono un comodo completamento del codice in IDE, interfacce (tipo hinting) e ereditarietà.

Se vuoi usare gli oggetti invece dell'array perché vedi dei benefici - usali, ma se vuoi usarli solo perché sono oggetti - non perdere tempo in questo refactoring:)

    
risposta data 27.05.2011 - 23:20
fonte
1

In realtà non si passano dati in un sistema OO: si passa oggetti in giro. La differenza è che gli oggetti contengono comportamenti e dati. Questo è il motivo per cui lo chiamano orientato agli oggetti e non orientato ai dati.

Se non hai bisogno di un comportamento con i tuoi dati, allora i normali vecchi array php sono altrettanto buoni (o cattivi, a seconda del tuo punto di vista) come oggetti valore.

    
risposta data 28.05.2011 - 15:04
fonte
0

Penso che questa sia solo una questione di aggiustamento - ci sono molte implementazioni di "oggetti" nella programmazione - Python e Javascript hanno proprietà sorprendentemente differenti. PHP OO è indiscutibilmente un hack: gli array PHP non sono "oggetti" nel senso tradizionale, ma servono a uno scopo ovvio. A meno che non si desideri che i dati abbiano un comportamento personalizzato, perché utilizzare un oggetto?

EDIT:

re: oggetti valore immutabile

link

    
risposta data 28.05.2011 - 01:53
fonte

Leggi altre domande sui tag