Come aumentare la mia conoscenza “avanzata” di PHP ulteriormente? (Rapidamente) [chiusa]

StackOverflow https://stackoverflow.com/questions/2948323

  •  05-10-2019
  •  | 
  •  

Domanda

Ho lavorato con PHP per anni e ottenuto una buona conoscenza della lingua, creato molti sistemi avanzati e non-così-avanzate che stanno lavorando molto bene.

Il problema che sto funzionando in è che ho imparato solo quando ho trovato un bisogno di qualcosa che non ho imparato prima. Questo fa sì che io lo sguardo soluzioni e altro codice che gestisce il problema, e così farò conoscere una nuova funzione o struttura che non avevo mai visto prima. E 'in questo modo che ho imparato molti dei miei migliori tecniche (come ad esempio studiando classi messo fuori da Amazon, Google o di altre società importanti).

Il problema principale di questo è il concetto di non essere in grado di imparare qualcosa se non si sa che esiste. Per esempio, mi ci sono voluti diversi mesi di programmazione per conoscere la funzione di empty(), e ho semplicemente avrebbe controllare la lunghezza della stringa utilizzando strlen() per verificare la presenza di valori vuoti.

ora sto ricevendo nella costruzione di sistemi sempre più grandi, e ho iniziato a leggere i blog come highscalability.com ei dati di replica MySQL e server che ricercano stato per il ridimensionamento. So che la struttura del codice è molto importante per fare pieno funzionamento dei sistemi.

Dopo aver letto un recente blog su struttura di Reddit, mi ha fatto chiedo se c'è qualche "sistemi accettato" standard o là fuori.

Ho guardato in quadri (ho usato Kohana, che mi è dispiaciuto, ma ha deciso che framework PHP non erano per me) e preferisco la mia libreria di funzioni, piuttosto che avere un quadro.

Il mio attuale struttura è un mix tra WordPress, Kohana e la mia conoscenza.

I modi in cui posso vedere come potenzialmente benefico sono:

  • Leggi i Blog
  • Leggi tutorial
  • Lavora con qualcun altro
  • Leggi un libro

Quale sarebbe il modo migliore (s) per "arrivare al livello successivo" il livello di essere un ottimo sviluppatore sistema?

È stato utile?

Soluzione

Tutti coloro che vogliono essere un programmatore PHP, sempre richiede solo la prima parola e ignora completamente la seconda.

Mentre "programmazione" è il modo più importante di "PHP", per essere un professionista PHP, uno dovrebbe essere un programmatore, in primo luogo.

Quindi, mi piacerebbe votare per l'ultima - la lettura di libri. Non su PHP, ma sulla programmazione in generale. Grady Booch 's, Martin Fowler 's ed anche il vecchio Donald Knuth 's quelli.
Sarebbe anche bello per prendere uno sguardo ad alcuni altri linguaggi, come Java o Python. Non passare a loro, ma di imparare da loro.

Altri suggerimenti

  

Io preferisco la mia libreria di funzioni   piuttosto che avere un quadro

Si fa riferimento a una 'libreria di funzioni' e 'un' quadro' come concetti distinti (bene!) Quindi perché non provare e alzare la posta un po' e girare quella libreria di funzioni in un quadro? Intendiamoci questo è un ottimo modo per imparare, ma non il modo migliore per avere competenze spendibili sul mercato;)

E 'anche un ottimo modo per imparare sbagliato Quindi, prima di iniziare quello che dovete fare qualche ricerca.

Il "must have" caratteristiche

Ci sono alcune caratteristiche quasi tutti i quadri hanno, e c'è una ragione per questo. La ricerca di loro; scoprire perché sono presenti e quali sono le loro variazioni sono; scegliere quali implementazioni si preferisce includere nel quadro.

       
  • Object Oriented (questa è la chiave per il motivo per cui ci si scrive un quadro piuttosto che semplicemente utilizzando la libreria di funzioni)
  •    
  • L'utilizzo di modelli (check-out e iniziare chiedendo perché così tanti quadri usano Application controller come al contrario di front controller ... e sono lì alcune piattaforme che uso Controllers pagina ?
  •    
  • MVC struttura
  •    
  • URL Clean
  •   

Caratteristiche delle piattaforme non-PHP si vuole capire ed emulare

Non ho idea di quali interessi così mi fermo lì.

pubblicarlo!

Questa parte è importante, perché Nathan è giusto : il lavoro deve essere visto, in discussione, criticato e corretti da altre persone. Non lasciare che la lampada sotto il moggio - ha bisogno di essere visto; mettere sul codice di Google o SourceForge o qualcosa del genere, e se la gente sta andando a preoccuparsi di guardare sul serio è necessario prendere sul serio; è necessario mantenere unit test e test di regressione; È necessario utilizzare il controllo di versione; è necessario lasciare un commento, bene, con un grande /* header comment */ nella parte superiore di ogni file e utili commenti doc-generazione per ogni classe e membro della stessa.

Sommario

Se fate tutto questo, si può imparare (a un livello elevato) su altre piattaforme. Si può sicuramente "ding 40" come uno sviluppatore PHP. È possibile conoscere test di unità; test di regressione su. È possibile conoscere documentare in modo efficace.

garantito il framework verrà fuori "idiosincratica e, probabilmente, sucky", ma si può imparare molto da scriverlo. Basta tenere a mente che il quadro non è un prodotto; è un viaggio ... di sorta.

  1. Se vuoi in nascoste di PHP e di PHP predefinito interfacce
  2. Ulteriori lingue diverse. Imparare le lingue che hanno una curva di apprendimento più ripida di PHP. Ogni volta che faccio notare vantaggi di altre lingue oltre PHP, io sono accusato di PHP che colpisce, per lo più essere persone che ovviamente mai veramente padroneggiato un altro linguaggio di alto livello. Ma sto andando correre il rischio. Suggerisco Ruby, Python, Perla e haXe (come contropartita strettamente tipizzato). Una volta che l'avete fatto, provate ad applicare le nuove conoscenze a PHP. O semplicemente si allontana da PHP, nel caso in cui non si vuole tornare indietro (che credo non è improbabile che accada).
  3. Imparare a trattare con critisizm. La vostra reazione al post di Nathan ha mostrato chiaramente non si può trattare con esso ancora. Lui è assolutamente ragione.
    • Guardando il mio primo quadro PHP ora, devo dire che è stato abbastanza merda. Al momento ho pensato che era ottimo (ed è ancora meglio di un sacco di codice di produzione che ho già visto schierato). Eppure, aveva molti difetti. A meno che non sei un genio totale, i primi quadri saranno basta guardare terribilmente se si guarda indietro a loro un paio di anni più tardi (supponendo che si evolvono).
    • In realtà, qualsiasi quadro si creerà sarà peggio, come passare del tempo (ammesso che non si fermano in evoluzione). Per questo motivo si potrebbe altrettanto bene usare framework disponibili e concentrarsi di più sullo sviluppo di applicazioni. Se il quadro si usa ha dei limiti, in considerazione contribuendo piuttosto che scrivere un altro framework PHP.
    • Il momento di scegliere scrivere i tuoi quadri (non solo per divertimento / apprendimento, ma per la distribuzione di produzione) è quando le vostre esigenze superare quello che altri framework là fuori offerta e non quando proprio non piace l'idea di lavorare con uno. E 'un errore comune, che ho fatto io. Ma ora posso dire, ho imparato da essa. Ma se chiedete un consiglio (che io purtroppo non ho fatto in quel momento) si ottengono risposte come questi.
    • Si impara molto da lavorare con il codice non hai scritto te stesso. Non solo si prende in mano concetti promossi da quadri altri mettono un sacco di pensiero in, ma anche imparare a essere produttivi, flessibili, in grado di lavorare in gruppo e per ottenere il lavoro fatto (pur ottenendo ragionevolmente buoni risultati).
    • Suppongo che non si può davvero pensare di essere migliore di ogni squadra di un progetto open source PHP là fuori, altrimenti si sarebbe chiedere. Prendi il bisogno istintivo ostinata di reinventare la ruota ogni giovane sviluppatore ha e crescere per affrontare ancora problemi nessuno ha affrontato.
  4. Scopri, quale sia la differenza tra una libreria di componenti e di un quadro. Dal momento che si pensa di poter sostituire un quadro con "la propria libreria di funzioni", che probabilmente non hanno capito, qual è il punto di quadri è. Dai un'occhiata alla inversione di dipendenza , inversione di controllo e iniezione di dipendenza .
  5. Per saperne di progettazione del software. Guardate principi OO come SOLID e GRASP .
  6. Prova diversi paradigmi. AOP, programmazione funzionale. Migliora le tue abilità OO utilizzando linguaggi con l'orientamento agli oggetti più forte, come ad esempio Ruby, Objective-C o Smalltalk.
  7. Guarda PHP framework quali FLOW3, Symfony, PHP accenditore e CakePHP. I'VE alpronto sottolineato il motivo per cui penso che si dovrebbe fare così.
  8. Come sottolineato in un altro commento di mio, si dovrebbe prendere in considerazione altri depositi di RDBMS. SQL e OOP in realtà non vanno bene insieme. Date un'occhiata a OODBMS, diversi livelli di astrazione del database, valore di negozi chiave, negozi di documento, come CouchDB e MongoDB, distribuisce il caching server come memcache etc.

Ecco alcuni pensieri:

  • provare cose diverse. Imparare una nuova lingua. Alcune volte nel processo di apprendimento che altro linguaggio, in realtà si fa meglio su entrambi.

  • Contribuire ad un progetto open-source.

  • alta scalabilità e PHP / MySQL non sono amici. Ci sono le tecnologie di oggi che sono costruiti solo per questo. node.js e Redis per citarne un paio.

  • Rispondere alle domande in SO. i problemi di altre persone possono farti pensare fuori dagli schemi e si migliorare il processo di cercare di aiuto, e anche fare qualcosa di bello a qualcuno.

  • [cercherà di aggiungere qui se penso ad altro ho appena svegliato bere il caffè: D]

Imparare a fare quello che già sai ... in un modo diverso. Esempi:

  • in una lingua diversa
  • su una piattaforma diversa
  • in parallelo / distribuito
  • attraverso un quadro (sì, avete deciso che essi "non sono per voi" - magari provare uno diverso, a volte sono molto diversi tra loro)

Forse si dovrebbe guardare in quadri di nuovo, vi suggerisco di avere uno sguardo alla Zend Framework, perché è più simile a una libreria di componenti è possibile utilizzare come si vede in forma, e in realtà non impone una struttura rigida che devi seguire (come alcuni altri quadri fanno), anche se non suggerire un (abbastanza sano di mente imho) layout del progetto. Un buon punto di partenza sarebbe Sopravvivere alla fine profondo .

Le cose che non sono ancora menzionato, e che potrebbe rivelarsi utile sapere (soprattutto in progetti di grandi dimensioni):

Semplice: farlo . Bisogni vi farà imparare. Trovare un modo per essere coinvolti in progetti sempre più avanzati, sia fonte commerciale o aperto. Non c'è altro modo si può veramente imparare qualcosa.

I unirebbe forum di discussione e cercare di risolvere altri problemi della gente. A volte ci sono abbastanza impegnativi domande che ti costringono a fare qualche ricerca. Se non è possibile rispondere, si può aspettare che qualcuno che può e poi imparare qualcosa.

Come per i quadri, imparare da loro. Mi rotolo il mio troppo, dal momento che la maggior parte dei quadri là fuori può essere piuttosto lento. Anche se abbastanza veloce per la maggior parte dei siti web là fuori.

Io consiglio anche guardando libreria PHP di Facebook. Fanno alcune cose interessanti in là.

Il meglio che puoi fare è quello di acquistare un libro su algoritmi efficienti . Nella vita di tutti i computer di scienza studente arriva un momento che lui / lei deve studiare quelli. I problemi che vengono discussi / risolti ci sono astrazioni di quasi ogni problema vero mondo si può mai faccia.

Oltre che i blog di lettura su come altri hanno fatto è perfettamente bene come ti aiuta a capire come utilizzare in pratica (e forse anche implementare) i principi di algoritmi efficienti.

Saluti.

Non è sufficiente si può dire di lavorare con altri sviluppatori. So 3 sviluppatori in particolare, 2 con cui lavoro in un giorno per giorno, che mi soffiare via con la loro conoscenza. Chiedo loro opinioni su tutto quello che faccio, non perché io indovinare le mie idee, ma più che voglio sentire altre idee, soprattutto da persone che stimo come sviluppatori. Ho imparato di più da queste persone di qualsiasi altro mezzo. Se non si ha accesso ad altri sviluppatori senior, quindi sicuramente un commento sul SO o altri forum dev e chiedere opinioni popoli, chiedere alle persone come avrebbero avvicinarsi un progetto specifico / issue. Voi non imparare nuove tecniche / metodi / funzioni in genere a meno che non li si vede in uso (come fai a sapere che cosa cercare, se non si sa che esiste?)

Inoltre, come già detto, prendere parte a un app OS. Vai a SourceForge e trovare un progetto che necessitano di uno sviluppatore. O scaricare un app e provo a scrivere un plugin per esso (sto scrivendo un plugin per Invision 3.0 atm e imparare alcune cose.)

La speranza che aiuta.

Codice di Leggi le altre persone. Voi avete la vostra biblioteca ora, ma si potrebbe ottenere qualche chiarimento durante la lettura la fonte di altre applicazioni. Poi chiedetevi il perché di. Essere l'autore del blog, al posto del lettore. Inoltre, sottolineare di più sul programmatore che la lingua. Piuttosto esaminare soluzioni che già risolvono un problema e cercare di replicare loro con la propria conoscenza. Buona fortuna e hanno un sacco di divertimento!

L'approccio di guardare al codice di altri programmatori è sicuramente un buon modo per imparare "buoni" o "cattivi" pratiche. Dopo aver letto altro codice a sviluppare un "sentimento" per buon codice.

Io consiglio Framework come Zend Framework, symfony, CakePHP o Agavi perché un sacco di contribuenti guardare il codice e sviluppare loro costantemente verso la soluzione "ideale" (che ovviamente non sarà mai raggiunta ...);) Voi ancora in grado di prendere la decisione in via di sviluppo le proprie classi, invece quelli che il quadro offerte ...

Con un così lungo sfondo PHP si potrebbe prendere in considerazione contribuendo ad un framework open source. Le discussioni con altri sviluppatori si mettono avanti in un modo più veloce.

Mostra il codice per gli altri e chiedere un feedback costruttivo ha lo stesso effetto. Non si sa mai quanto sei bravo, fino a riferimento le tue abilità con gli altri. Sempre in modo costruttivo. Questo sarebbe un processo naturale quando contribuendo ad un framework open source. ;)

Si dovrebbe lavorare con gli esempi, lavoro con loro quando si espande in modo imparerete come espandere esempi rendendoli più funzionali e dare di più funzioni.

Anche se, è bene creare qualcosa che hai imparato finora in PHP. Per praticare di più, si dovrebbe creare qualcosa di simile, un sistema di prenotazione, ecc Prima o poi si sarà in grado di espandere più imparando di più quando si studia più in PHP che porterà il vostro sviluppo di essere molto più meglio.

Si potrebbe chiedere la vostra azienda se potevano pagare un esame di certificazione Zend PHP. Studiare per questo esame obbligherebbe tu sappia bene e per la stazione di PHP da letto un sacco di documentazione, la guida di studio Zend, e anche per la formazione con esami di prova. E 'un modo molto efficace per migliorare, e sembra abbastanza buono su un curriculum.

"la mia libreria di funzioni" == "un [idiosincratica e probabilmente sucky] quadro".

Mi consiglia di imparare Symfony perché gli sviluppatori sembrano sforzarsi costantemente di fare tutto secondo le "buone" pratiche. .. ma probabilmente si potrebbe imparare molto da una qualsiasi delle strutture popolari.

Non scrivere il proprio quadro. Per favore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top