Para mí existen dos niveles en PHP.
El primero consiste en escribir en el bloc de notas cualquier ejemplo que hayas leído, entenderlo, mejorarlo, usar ifs, fors, whiles, aprender a conectar a una base de datos, hacer consultas, imprimir resultados, hacer que quede bonito en HTML y CSS, etc, etc... ¡ Incluso podrás aprender que son las clases y objetos !
Esto es lo que suele saber hacer la mayoría de gente que dice saber programar en PHP. Como lenguaje en sí, es muy facilón, pues ya verás que el manejo de cualquier tipo de variables es un juego de niños.
Ahora bien, si quieres aprender de verdad y ser un buen programador en PHP, y para mí, esto es el segundo nivel, necesitarás saber más cosas, tales como UML, POO y bastante SQL. Lo más difícil es, sobretodo, estructurar tus proyectos bien desde el principio. Que un cambio a posteriori suponga minimos cambios en tu estructura.
Totalmente de acuerdo mi estimado Ertai, es muy importante un buen levantamiento de información y un buen diseño de la base de datos, de esta manera, un cambio en el futuro no alterara en gran escala los módulos del sistema.
y si es posible, recomiendo la elaboración (previo a la programación) de DFD, de verdad ayudan.