[PHP] Hilo general

Traber

Inspirado por el hilo de Python, y siendo yo más de PHP, pues he decidido abrir un hilo para ir metiendo aquí todas las cosillas de PHP que se pueda :D

Qué es PHP

PHP es un lenguaje de programación interpretado de propósito general orientado a la creación de sitios web dinámicos. Es un lenguaje de scripting senciilo pero potente, además de ofrecer un buen rendimiento para tratarse de un lenguaje interpretado. Es el motor de gran parte de las webs más visitadas del mundo.

Y como no, un trocito de historia de la Wikipedia:

PHP es un lenguaje de programación orientado a objetos de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera la página web resultante. PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de comandos que puede ser usada en aplicaciones gráficas independientes. Puede ser usado en la mayoría de los servidores web al igual que en casi todos los sistemas operativos y plataformas sin ningún costo.

PHP se considera uno de los lenguajes más flexibles, potentes y de alto rendimiento conocidos hasta el día de hoy, lo que ha atraído el interés de múltiples sitios con gran demanda de tráfico, como Facebook, para optar por el mismo como tecnología de servidor.

Fue creado originalmente por Rasmus Lerdorf en 1995. Actualmente el lenguaje sigue siendo desarrollado con nuevas funciones por el grupo PHP. Este lenguaje forma parte del software libre publicado bajo la licencia PHP, que es incompatible con la Licencia Pública General de GNU debido a las restricciones del uso del término PHP.

Wikipedia

Usos de PHP

Como ya he citado, PHP es un lenguaje de programación de propósito general, pero en su mayoría sirve para la creación de sitios web dinámicos. Los CMS (Sistemas de Gestión de Contenido) más populares están escritos en este lenguaje de programación, y la mayoría de sitios web del mundo utilizan PHP para funcionar, como por ejemplo Facebook, aunque en Facebook utilicen una implementación propia de PHP llamada HHVM o Hip-Hop Virtual Machine.

Con PHP puedes hacer una web, una aplicación "en la nube" (o el front-end/back-end de ésta), una tienda online, o también puedes utilizar la utilidad de línea de comandos php-cli para automatizar tareas en tu día a día utilizando scripts en PHP.

Una de las pegas de PHP en cuanto a su uso como lenguaje para la web es la necesidad de montar un servidor web para el desarrollo (Apache - Nginx - Lighttpd - Cherokee) con todo lo que ello conlleva: Configuración, actualización, problemas de rendimiento, diferencias entre los módulos y extensiones de la máquina de desarrollo y el servidor donde se alojará la aplicación...etc. Aunque a día de hoy, gracias a los todo en uno tipo XAMPP o WAMPP todos estos problemas en el desarrollo suelen ser menores, es un detalle a tener en cuenta. Si lo que se desarrollan son aplicaciones de consola, no obstante, esto no es necesario.

Como empezar con PHP

En este punto no sabría muy bien cómo orientar a alguien que quisiera aprender a programar en PHP, así que si tenéis algún consejo en este sentido estoy abierto a aprender a aprender PHP :D.

<?php exit; ?>

Y hasta aquí la introducción a PHP, ¡Que empiece la fiesta!

2
Traber

No reinventes la rueda - Frameworks en PHP

Como la mayoría de lenguajes de programación, PHP dispone de múltiples Frameworks que nos harán la vida más fácil.

Los frameworks son conjuntos de funciones y librerías que permiten implementar, de manera homogénea, una serie de funciones y características de manera global en una aplicación. Además, muchos de ellos se basan en el patrón MVC (Modelo-Vista-Controlador), que permite tener mejor estructurado el proyecto.

Entre los frameworks de PHP, destacaría los siguientes:

  • Zend Framework: Un viejo conocido de muchos programadores en PHP, un framework veterano (desde 2006 nada menos) y concebido por los creadores de PHP.

  • Laravel: Sin duda, uno de los frameworks de PHP que más crecimiento en usuarios ha experimentado en los últimos años, el más popular actualmente por su facilidad de aprendizaje y por la rapidez de creación de aplicaciones web.

  • CakePHP: Aunque su nombre lo de a entender, este framework no es un "piece of cake", creado sobre la base sentada por Ruby-on-Rails, implementa muchos de sus conceptos, lo que le hizo ganar popularidad.

  • Symfony: Uno de los frameworks más útiles a la hora de hacer aplicaciones completas (no sitios web), integra un sistema ORM que permite abstraer el sistema del motor de base de datos a utilizar.

  • Codeigniter: Otro framework muy popular, entre sus bondades destaca un excelente rendimiento. Es el framework con el que me manejo actualmente, así que de este puedo hablar un poco más, pero me reservaré para más adelante :P.

Existen bastantes frameworks más, pero me he centrado en los más populares (Zend framework ya está pasado de moda chicos) y los que se basan en PHP puro y duro (Phalcon es excelente en cuanto a rendimiento pero se abstrae del PHP tradicional, por ejemplo).

1 2 respuestas
1 comentario moderado
Traber

#3 ¿No será por lo de Zend Framework? No es por nada, pero los proyectos que he tocado de Zend Framework eran demasiado engorrosos, muy mal estructurados, la programación no era nada intuitiva a mi parecer... Y no estoy hablando de proyectos mierder, estoy hablando de proyectos para una comunidad autónoma, que ahí necesitas orden sí o sí xD. Entre eso, y que Zend, con el paso de los años, se ha ido llenando de morralla sin mejorar apenas el rendimiento, mas la aparición de otros competidores... Se ha quedado atrás.

Si lo dices por otro, ya me he perdido :wow:

HeXaN

Symfony y no hay más que hablar.

1 1 respuesta
Traber

#5 Para gustos los colores, por eso hay donde elegir :D

Pero no se, algo no me termina de llamar con Synfony, llamame hereje xD

RaymaN

Espero que el hilo no se convierta en un debate sobre frameworks.

stackoverflow: Características ocultas de PHP

1 1 respuesta
Traber

#7 Me sonaba haber visto todo eso recopilado en un solo mensaje y ordenadito, en lugar de post por post, pero no recuerdo donde... o a lo mejor la memoria me está jugando una mala pasada :psyduck:

X-Crim

php :love:

B

Hay pocos lenguajes más feos que PHP, pero es como cobol o java, está demasiado anclado y hay que convivir con el, así que, buen thread a seguir xD.

1 respuesta
BLZKZ

Por si a alguien le interesa, el framework php mas rápido* https://phalconphp.com/es/

Por cierto, CI (al menos el tiempo que lo usé), es un framework "tradicional", que distaba mucho de lo que es symfony o lo que considero frameworks de "nueva generación", lo cual no es malo, de hecho la curva de aprendizaje es mucho menos pronunciada.

Si tengo que elegir, prefiero otros lenguajes para programar, pero de momento es el que uso en el curro mayoritariamente (junto con javascript)

1 respuesta
Traber

#10 ¿A que te refieres con feo? La sintaxis, las caracteristicas del lenguaje...

#11 Se que Phalcon en cuanto al rendimiento es lo mejor que hay en PHP (aunque no es PHP puro), pero me interesa más lo que mencionas de frameworks tradicionales y de nueva generacion... ¿Crees poder profundizar mas en ello de forma resumida? Qué es cada uno, diferencias, ventajas, inconvenientes... :)

1 respuesta
B

#12

La sintaxis es horrible y además existen cantidades abismales de código (especialmente proyectos antiguos) que no utilizan guías de estilo, ni unos principios de desarrollo mínimo, conviertiendo a php en la peor pesadilla para los que sufrimos día a día el parchear o actualizar aplicaciones antiguas.

Hasta la fecha vi muy poco código decente en PHP.

P.S: PHP a veces parece más ofuscado que perl xD

1 respuesta
Traber

#13 eso pasa en todos los lenguajes de programación que tienen unos añitos ya, la gente que ha hecho cosas en ese lenguaje desde que salió lo hizo con unas herramientas y un modo de estructurar el proyecto diferente a como se hace hoy en día, que se hace mucho mejor, así que es normal xD.

Hoy en día los proyectos en PHP tienen buena calidad por lo general, y desde la inclusión de namespaces más todavía. Como en cualquier lenguaje de programación, imagino, que la calidad del código en general ha aumentado (o debería). Pero vamos, que la calidad no depende tanto del lenguaje sino del que programador (excepto Objective-C, aprender Egipcio Antíguo es más fácil xD).

De hecho, la evolución creo que es la misma que he sufrido yo cuando he ido aprendiendo a programar, antes estructuraba todo y ahora utilizo objetos para cualquier cosa, en cualquier gilipollez uso objetos, aunque sea un script de un solo uso xD.

Saphyel

#2 cagon la pu** como no mencionas zend??? el unico que existe desde el origin de los tiempos y esta hecho por los mismos de PHP...

Y por que no dices nada de php-fpm??

y que pasa con los microservices eso que esta en boca de todos??
parece un hilo de php4 #DEP

Ahh gracias por los edits, ahora esta algo quizas mas completo, pero esta algo erroneo... https://framework.zend.com/blog/2016-06-28-zend-framework-3.html

De hecho el microframework mas rapido que existe esta basado en zend: --> https://docs.zendframework.com/zend-expressive/

1 respuesta
Traber

#15 Vaya, no sabía que había salido ZF3, le tendré que echar un vistazo a ver que tal... :P

Tal vez sea porque lo que he tocado de ZF era del primero y ni siquiera usaba ZF2, pero lo que he visto de ZF hasta la fecha han sido atrocidades, y decidí no tocarlo ni con un palo xD, todo lo que toqué era como tratar de resucitar un dinosaurio y ponerle alas... ¿Quién en su sano juicio almacena configuraciones para PHP en ficheros .ini? Pudiendo hacerlo en PHP para cargarlos directamente en la aplicación sin parsearlo ni historias... Pues eso xD.

Y me pasa lo mismo con Symfony, tuve que hacer cosas con ICA-AtoM (basado en Symfony) y me quise pegar un tiro :no:

Creo que va a tocar editar #2 y añadir un par de cosillas, de hecho con lo de los microframeworks me has dado una idea :D

Lo de los microservicios tiene más que ver con la forma de estructurar una aplicación (o varias) que con la característica de un lenguaje en sí, de hecho, creo (y digo creo porque no se si es así) que donde más extendida está la arquitectura de microservicios es servidores basados en Java.

P.d.: Lo de PHP4 me ha dolido en la patata :(

1 respuesta
Saphyel

#16 Para nada, en mi ong usamos microservices con PHP y react/elm y cuando un PR es mergeado en 1h es live.

1 respuesta
Traber

#17 No te digo yo que no se use, solo digo que se usa en otros entornos más que en PHP. Por curiosidad, y ya que sigues hablando de microservicios, ¿qué ventajas os da a la hora de implementar cosillas?

B

Buen hilo, justamente hace unos días empece a interesarme en php y estoy haciendo el cursillo de php en codeacademy...después de ahí por donde me aconsejáis a seguir aprendiendo? Me meto ya en algun framework o no?

3 respuestas
Merkury

No me habia fijado en este hilo, a favs de cabeza.

Traber

#19 Como ya digo, no soy muy bueno en esto de tratar de enseñar o eso, pero te recomendaría que buscaras algo que hacer en PHP, una especie de proyecto, como unobjetivo que te sirva para sentirte satisfecho, aplicar lo aprendido, y seguir aprendiendo, porque los cursos están bien, pero donde más se aprende es cuando empiezas a hacer algo y tienes que hacer búsquedas como loco cuando te atascas xD.

1 1 respuesta
B

#19

Depende de que quieras hacer, pero vamos, php a pelo yo sólo lo usaría para hacer algo que no exista. Existiendo frameworks para casi cualquier cosa aprovéchalos, cake php por ejemplo.

2 respuestas
Merkury

#22 Utilizar frameworks como recurso para todo ni es lo mas apropiado. Cada herramienta tiene su utilidad, algunas veces un framework es la respuesta, otra usar OO PHP puede ser la solucion.

RaymaN

Pasar de codeacademy a frameworks, claro que sí guapi.

Traber

#22 Recomendar frameworks para todo es como recomendar aprender JQuery antes que javascript: necesitas comprender las bases de un lenguaje antes de utilizar un framework. Te cierra muchas posibilidades cuando quieres hacer algo que el framework no lleva ya programado y te toca hacerlo a ti a manopla, lo cual es muy, muy malo.

Gantorys

#19 Yo haría lo que te comenta #21 más o menos.

Cuando tienes que buscar por cojones X cosa y vas leyendo distintas maneras de hacerlo y te decantas por una, ahí es cuando "aprendes", independientemente de que al mes siguiente pienses que esa manera de hacerlo es una mierda.

Después te vas metiendo en los frameworks o viendo código de otras personas y ahí es cuando te das cuenta: "hostia pues utilizando este código me ahorra toda la mierda que suelo hacer, qué wapoh lol".

De nada te sirve saber que este código te devuelve todos los usuarios de la base de datos si no sabes lo que es una clase, ni qué es PDO ni nada.

$users = User::all();
1
NuKeD

Yo estaría interesado en leer el "Como empezar con PHP" desde un punto de vista personal de cada uno, pq es algo con lo que me he querido poner siempre pero por circunstancias y vagancia no he podido xD

B

Bueno ya estoy haciendo mis primeros poryectos con php y mysql y de momento va todo sobre ruedas pero a la hora de hacer el diseño de la web es un jodido infierno...¿Hay alguna herramienta que te ayude con el tema del css y html en plan arrastrando y dejar la web mas o menos bonita y moderna sin tener que escribirme toda la mierda del css? Porque me daría un asco tremendo tener que aprenderme todo eso tambien...

3 respuestas
MrBigel

#28 Pues sin ser un entendido sobre esto(estoy aún estudiando), te diré que html y css es bastante más básico que php o js y si lo que quieres es salir al mercado laboral practicamente todas las ofertas piden html + css + php + js. A mi me pasa un poco al revés, me encanta crear un entorno gráfico bonico, la interfaz me da más pereza.

1 respuesta
MartiONE

#28 bootstrap?

1 respuesta