¿Cómo aumentar mis conocimientos “avanzada” de PHP más? (Rápidamente) [cerrado]

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

  •  05-10-2019
  •  | 
  •  

Pregunta

He estado trabajando con PHP desde hace años y ha conseguido una muy buena comprensión del idioma, creado muchos sistemas avanzados y no tan avanzadas que están funcionando muy bien.

El problema que estoy corriendo en es que sólo aprenden cuando encuentro una necesidad de algo que no he aprendido antes. Esto provoca que mire hacia arriba soluciones y otro código que se encarga de los problemas, y así voy a aprender sobre una nueva función o estructura que no había visto antes. Es de esta manera que he aprendido muchas de mis mejores técnicas (tales como el estudio de las clases ponen a cabo por Amazon, Google o de otras grandes empresas).

El principal problema con esto es el concepto de no ser capaz de aprender algo si no sabe que existe. Por ejemplo, me llevó varios meses de programación para aprender acerca de la función empty(), y simplemente se comprueba la longitud de la cadena usando strlen() para comprobar si hay valores vacíos.

Ahora estoy metiendo la construcción de sistemas cada vez más grandes, y he empezado a leer blogs como highscalability.com y estado investigando datos de replicación de MySQL y el servidor de escalamiento. Sé que la estructura de su código es muy importante para hacer funcionar los sistemas completo.

Después de leer un blog reciente sobre la estructura de reddit, que me hizo cuestionar si hay algunos "sistemas aceptada" estándar o por ahí.

He mirado en los marcos (He usado Kohana, que me arrepentí, pero decidí que los marcos de PHP no eran para mí) y prefiero mi propia biblioteca de funciones en lugar de tener un marco.

Mi estructura actual es una mezcla entre WordPress, Kohana y mi propio conocimiento.

Las formas puedo ver como potencialmente beneficioso son:

  • Lee los
  • leer tutoriales
  • El trabajo con otra persona
  • Leer un libro

¿Cuál sería la mejor manera (s) para "llegar al siguiente nivel" al nivel de ser un muy buen desarrollador del sistema?

¿Fue útil?

Solución

Todo el que quiere ser un programador de PHP, siempre toma sólo la primera palabra e ignora por completo la segunda.

Mientras que la "programación" es mucho más importante que "PHP", para ser un profesional de PHP, es necesario un programador en el primer lugar.

Por lo tanto, yo votaría por el último - la lectura de libros. No en PHP, pero en la programación en general. Grady Booch 's, Martin Fowler 's, e incluso el viejo Donald Knuth 's queridos.
Sería también sea agradable a echar un vistazo a algunos otros lenguajes, como Java o Python. No para cambiar a ellos, sino para aprender de ellos.

Otros consejos

Yo prefiero mi propia biblioteca de funciones en lugar de tener un marco

Usted se refiere a una 'biblioteca de funciones' y 'un' marco' como conceptos distintos (bien!) ¿Por qué no tratar de subir la apuesta un poco y convertir esa biblioteca de funciones en un marco? Eso sí que es una gran manera de aprender, pero no es la mejor manera de tener habilidades comerciales;)

También es una gran manera de aprender mal lo que antes de empezar hay que hacer algunas investigaciones.

La "debe tener" características

Hay ciertas características casi todos los marcos tienen, y hay una razón para ello. La investigación de ellos; averiguar ¿Por qué que están presentes y cuáles son sus variaciones son; elegir qué implementaciones prefiere incluir en su marco.

  • Orientada a Objetos (esta es la clave de por qué iba a escribir un marco en lugar de sólo usar su biblioteca de funciones)
  • Uso de Patrones (echa un vistazo y empezar a preguntarse por qué tantos marcos utilizan como en contraposición a Frente ... ¿y hay algunas plataformas, que el uso Controladores ?
  • MVC estructura
  • URLs limpias

Características de las plataformas que no son PHP se quiere entender y emular

No tengo idea de cuáles son los intereses que lo que voy a parar allí.

Publicar él!

Esta parte es importante, porque Nathan es correcta : el trabajo tiene que ser visto, cuestionado, criticado y corregido por otras personas. No deje que la parábola de la lámpara - que tiene que ser visto; ponerlo en el código de Google o sourceforge o algo así, y si la gente va a molestar a mirar en serio que necesita tomar en serio; que necesita para mantener las pruebas unitarias y pruebas de regresión; Tiene que usar el control de versiones; que necesita para comentar bien, con una gran /* header comment */ en la parte superior de cada archivo y útiles comentarios generar doc-para cada clase y miembro de la misma.

Resumen

Si haces todo esto, se puede aprender (a un nivel alto) sobre otras plataformas. Definitivamente se puede "ding 40" como un desarrollador de PHP. Usted puede aprender sobre la unidad de pruebas; pruebas de regresión sobre. Usted puede aprender sobre la documentación de manera efectiva.

garantizada su marco va a salir "idiosincrásico y probablemente va a trompicones", pero se puede aprender mucho de escribirlo. Hemos de tener en cuenta que el marco no es un producto; es un viaje ... de todo tipo.

  1. características ocultas de PHP y predefinido interfaces de
  2. Aprender idiomas diferentes. Aprender idiomas que tienen una curva de aprendizaje más pronunciada que en PHP. Cualquier momento señalo ventajas de otros idiomas más de PHP, soy acusado de los ataques de PHP, en su mayoría gente que, obviamente, nunca dominar otro lenguaje de alto nivel. Pero voy a correr el riesgo. Sugiero Ruby, Python, Perla y haXe (como contrapartida estrictamente mecanografiado). Una vez que lo hizo, trate de aplicar sus nuevos conocimientos de PHP. O simplemente se aleja de PHP, en caso de que no quiero ir hacia atrás (que creo que no es poco probable que suceda).
  3. Aprender a lidiar con critisizm. Su reacción al mensaje de Nathan mostró claramente que no se puede tratar con él todavía. Tiene toda la razón.
    • En cuanto a mi primer framework PHP ahora, tengo que decir que fue bastante mierda. En el momento pensé que era genial (y todavía es mejor que una gran cantidad de código de producción que ya he visto desplegado). Aún así, tenía muchos defectos. A menos que seas un genio total, su primeros marcos sólo se verá tremendamente si se mira hacia atrás en ellos unos años más tarde (suponiendo que evolucionan).
    • En realidad, cualquier marco que va a crear se verá peor a medida que pasa el tiempo (asumiendo que no deja de evolucionar). Por esta razón es posible que tan bien utilizar los marcos existentes y centrarse más en el desarrollo de aplicaciones. Si el marco que utiliza tiene limitaciones, considere contribuir en lugar de escribir un nuevo framework PHP.
    • El punto en el tiempo para elegir escribir sus propios marcos (no sólo por diversión / aprendizaje, pero para el despliegue de producción) es cuando sus requisitos de superar lo que otros marcos que hay oferta y no cuando simplemente no me gusta la idea de trabajar con uno. Es un error común, lo que he hecho a mí mismo. Pero ahora puedo decir, he aprendido de ella. Pero si pide consejo (que por desgracia no lo hice en ese momento) obtendrá respuestas como éstas.
    • Se aprende mucho trabajando con código que no escribe usted mismo. No sólo se puede recoger conceptos promovidos por marcos otros ponen un montón de pensamiento en, pero también aprender a ser productivo, flexible, capaz de trabajar en equipo y para hacer el trabajo (mientras que la obtención de resultados razonablemente buenos).
    • supongo que realmente no se puede pensar que eres mejor que todos los equipos de un proyecto de código abierto PHP por ahí, de lo contrario sería preguntar. Superar la necesidad instintiva terca que reinventar la rueda cualquier desarrollador joven tiene y crecer para hacer frente a los problemas nadie ha abordado todavía.
  4. Para saber, cuál es la diferencia entre una biblioteca de componentes y un marco. Puesto que usted piensa que puede sustituir a un marco con "su propia biblioteca de funciones", es probable que no haya entendido, lo que el punto de marcos es. Echar un vistazo a dependencia de la inversión , inversión de control y dependencia inyección .
  5. Aprender sobre el diseño de software. Vistazo a principios OO como sólida y GRASP .
  6. Prueba diferentes paradigmas. AOP, la programación funcional. Mejorar sus habilidades utilizando lenguajes orientados a objetos con orientación a objetos más fuerte, como Ruby, Objective-C o Smalltalk.
  7. Mira PHP marcos como FLOW3, Symfony, el encendedor PHP y CakePHP. Me he collistos señaló por eso que creo que debe hacerlo.
  8. Como se señaló en otro comentario mío, se debe considerar que los otros almacenes de RDBMS. SQL y programación orientada a objetos realmente no van bien juntos. Echar un vistazo a los SGBDOO, diferentes niveles de abstracción de base de datos, de valor clave tiendas, almacenes de documentos tales como CouchDB y MongoDB, distribuye almacenamiento en caché de los servidores como Memcache etc.

Here are a few thoughts:

  • Try different things. Learn a new language. Some times in the process of learning that other language, actually makes you better on both.

  • Contribute to an open-source project.

  • High scalability and PHP/MySQL are not friends . There are technologies today that are build just for that. node.js and Redis to name a couple.

  • Answer questions in SO. Other people's problems can make you think outside the box and you improve on the process of trying to help, and you also do something nice to someone.

  • [ will try to add here if I think of anything else I just woke up drinking coffee :D ]

Learn to do what you already know ... in a different way. Examples:

  • in a different language
  • on a different platform
  • in parallel/distributed
  • through a framework (yes, you decided that they "aren't for you" - maybe try a different one, they are sometimes very different from each other)

Maybe you should look into frameworks again, I would suggest having a look at the Zend Framework, because it's more like a library of components you can use as you see fit, and doesn't really impose a rigid structure you have to follow (like some other frameworks do), though it does suggest a (quite sane imho) project layout. A good starting point would be Surviving the deep end.

Things you haven't mentioned yet, and that could prove useful to know (especially in larger projects) :

Simple: do it. Needs will make you learn. Find a way to get involved in increasingly advanced projects, be it commercial or open source. There is no other way you can really learn something.

I would join discussion boards and try to solve other peoples problems. Sometimes there are quite challenging questions that force you to do some research. If you can't answer it, you can wait for someone who can and learn something then.

As for frameworks, learn from them. I roll my own too, since most of the frameworks out there can be rather slow. Although fast enough for most of the websites out there.

I would also recommend looking at Facebook's PHP library. They do some interesting stuff in there.

The best you can do is to buy a book on efficient algorithms. In every computer science student's life there comes a time he/she has to study those. The problems that are discussed/solved there are abstractions of almost any real world problem you may ever face.

Besides that reading blogs about how others did it is perfectly fine as it helps you to understand how to practically use (and maybe even implement) the principles of efficient algorithms.

Regards.

Not enough can be said about working with other developers. I know 3 developers especially, 2 that I work with on a day to day basis, who blow me away with their knowledge. I ask their opinions on everything I do, not because I second guess my own ideas, but more that I want to hear other ideas, especially from people who I respect as developers. I learn more from these people than any other means. If you have no access to other senior developers, then definitely post on SO or other dev forums and ask peoples opinions, ask people how they would approach a specific project/issue. You wont learn new techniques / methods / functions generally unless you see them being used (how do you know what to look for if you don't know it exists?)

Also, as already stated, take part in an OS app. Go to sourceforge and find a project needing a developer. Or download an app and try to write a plugin for it (I am writing a plugin for Invision 3.0 atm and learning a few things.)

Hope that helps.

Read other people's code. You have your own library now, yet you might get some enlightenment when reading the source of other applications. Then ask yourself the 'why's. Be the blog writer, instead of the reader. Also, emphasize more on the programmer than the language. Rather look at solutions that already solve a problem and try to replicate them with your own knowledge. Good luck and have a lot of fun!

The approach to look at at other programmers code is definitely a good way to learn "good" or "bad" practices. After reading other code you develop a "feeling" for good code.

I definitely recommend Frameworks like Zend Framework, symfony, CakePHP or Agavi because a lot of contributors look at that code and develop them constantly towards the "ideal" solution (which of course will never be reached...) ;) You still can make the decision developing your own classes instead the ones the framework offers...

With such a long PHP background you could consider contributing to an open source framework. Discussions with other developers bring you forward in a faster way.

Showing your code to others and ask for constructive feedback has the same effect. You never know how good you are until you benchmark your skills with others. Always in a constructive manner. This would be a natural process when contributing to an open source framework. ;)

You should work with examples, work with them when you expand them so you will learn how to expand examples by making them more functional and give out more features.

Although, it is good to create something that you've learned so far in PHP. To practise more, you should create something like, a booking system, etc. Sooner or later you will be able to expand more by learning more when you study more in PHP which will lead your development to be much more better.

You could ask your company if they could pay you a Zend PHP certification exam. Studying for this exam would oblige you to know PHP well and to train by reading a lot of the documentation, the Zend study guide, and also by training with mock exams. It's a very efficient way of improving, and it looks quite good on a résumé.

"my own library of functions" == "a [idiosyncratic and probably sucky] framework".

I recommend learning Symfony because the developers seem to consistently strive to do everything according to "best" practices ... but you could probably learn a lot from any of the popular frameworks.

Don't write your own framework. Please.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top