No se puede negar que la nuestra es una industria increíblemente difícil. ¿Ha considerado alguna vez aprender un segundo idioma? Bueno, ¿qué tal cinco? Eso es lo que se requerirá de usted, si pretende convertirse en un desarrollador web moderno. Teniendo en cuenta esto, si no tienes cuidado, muy rápido, puedes encontrarte abrumado, mientras observas ciegamente los innumerables artículos confusos del blog o libros técnicos..
La clave, como con cualquier cosa, es dar un paso a la vez..
La clave, como con cualquier cosa, es dar un paso a la vez. ¿Te culparías por no aprender un idioma hablado en un mes? Por supuesto no. Luego aplique ese mismo nivel de pensamiento a su viaje de programación. Estas cosas llevan tiempo, pero, mientras continúes avanzando, estarás allí en un momento. No te detengas!
El primer paso es HTML. Entender qué propósito un El segundo paso, como habrás adivinado, es CSS. Aprende a diseñar elementos en la página. Aprecie a qué se refiere la "separación de preocupaciones", y cómo se aplica esto a su HTML y CSS. Completa tu primer sitio web simple. El tercer paso es cuando los desarrolladores comienzan a ramificarse en sus propias especialidades. En este punto, podría sumergirse en el mundo de JavaScript, que está en auge como nunca antes. O bien, podría centrar sus esfuerzos en el backend.. Confundido por la diferencia entre Interfaz y backend? Piense en la interfaz como la punta del iceberg que derribó el Titanic. Es la parte de la aplicación que es visible para el usuario y se puede interactuar con ella. El backend, por otro lado, maneja todo, desde la persistencia hasta las validaciones y el enrutamiento.. A los efectos de este artículo, supongamos que ha elegido la última opción; el lado del servidor, es! No se puede negar el hecho de que PHP domina la web.. Desafortunadamente, una vez más, te encuentras con un puñado de caminos para tomar. ¿Debería elegir la opción más popular - PHP? ¿Qué pasa con Ruby? Los chicos cool parecen preferir eso en estos días. Entonces otra vez, ¿qué pasa si tienes barba? Es Python la elección correcta. Sin embargo, lo más importante es cómo podría hacer una selección cuando no tiene experiencia.? En situaciones como esta, y en opinión de este autor, no hay una elección incorrecta. Y, ciertamente, no hay nada que le prohíba cambiarse por el camino. De hecho, ¡todos los desarrolladores están invitados a aprender varios idiomas! Por ahora, sin embargo, la clave es elegir solo uno y aprenderlo bien.. Si bien es cierto que PHP no es el idioma más hermoso, no se puede negar el hecho de que domina la web. De hecho, es el lenguaje de scripting más popular del mundo. El beneficio de esto es que puede estar seguro de que cada pregunta de PHP ya se ha formulado, resuelto y documentado. Hay consuelo en saber esto. Aunque se encuentra en la etapa más frágil de su aprendizaje, una comunidad masiva y amigable está a su puerta, lista para ayudar. Aún mejor, PHP está experimentando un renacimiento moderno como nunca antes, gracias a herramientas como Composer y Laravel. PHP, un acrónimo de PHP: preprocesador de hipertexto (sí, a los desarrolladores les encantan sus chistes recursivos), es un lenguaje de scripting que fue creado específicamente para la web. Sin embargo, hay muchas posibilidades de que esto todavía no signifique nada para ti. ¿Lenguaje de escritura? Eh ¿Cuándo alcanzarías PHP sobre HTML simple? Bueno, tal vez un ejemplo está en orden. Suponiendo que haya instalado PHP correctamente, cree un Sí, es el ubicuo "Hola Mundo"ejemplo con el que se familiarizará con el progreso de sus habilidades. Cada idioma / marco / herramienta tiene uno! Para ejecutar este código, use el servidor incorporado de PHP. Cambie a su herramienta de línea de comandos favorita (Terminal, para usuarios de Mac), Propina: MAMP y WAMP son excelentes soluciones con un solo clic para instalar PHP, MySQL y Apache en tu Mac o PC, sin tener que buscar en la línea de comandos. Pueden ser opciones útiles en las primeras etapas de su aprendizaje.. WampServer es un entorno de desarrollo que permite la instalación de PHP, Apache y MySQL con un solo clic.. Es cierto que esto no es lo más emocionante del mundo. De hecho, es probable que estés pensando "¿Por qué no podría escribir 'Hello world' directamente en la página HTML y eliminar la necesidad de PHP por completo??"Es cierto; para este ejemplo, no sirve para nada. Sin embargo, un lenguaje de scripting como PHP se vuelve particularmente útil cuando la salida debería ser de naturaleza dinámica. Qué tal si, en lugar de mundo, desea que el saludo haga referencia a un valor pasado a través de la cadena de consulta de la URL (el texto en la barra de direcciones que aparece después del signo de interrogación). Aquí hay un ejemplo actualizado, que logra precisamente eso! Ahh, esto introduce algunas nuevas técnicas. En primer lugar, el único período que separa a Hola cuerda y que confuso Prueba esto cargando Una de las claves para una programación madura es considerar todos los caminos posibles a través de su código. Por ejemplo, ¿y si no? Aunque hay formas más simplificadas de permitir esto, el ejemplo anterior es un excelente punto de partida. También es su primera introducción a las declaraciones condicionales. Enfoque su código de la misma manera que manejaría los escenarios en la vida real. Por ejemplo, "Si nos quedamos sin leche, ve a la tienda. De lo contrario, quédate en casa."Esta línea de pensamiento podría traducirse a PHP, usando la siguiente lógica: En este bit de código, solo se imprimirá una sola línea de texto en la pantalla. El valor de la variable (un valor dinámico), Propina: Para declarar variables en PHP, preceda cualquier nombre con un signo de dólar. Como práctica recomendada, opte por nombres de variables legibles sobre alternativas crípticas. Volviendo al ejemplo anterior, siempre que Desafortunadamente, todavía no estamos en casa libres. Una buena práctica de programación clave es colocar la seguridad a la vanguardia de cada acción. Incluso con este ejemplo increíblemente básico, hemos abierto la puerta a uno de los problemas de seguridad más generalizados en la web: XSS (Cross-Site Scripting). Una verdadera comprensión de esto está absolutamente más allá del alcance de esta lección introductoria (se han escrito libros completos en ella), sin embargo, aquí hay una ilustración básica: ¿qué pasaría si Debido a que este valor no se ha saneado, en la ejecución, en algunos navegadores, se mostrará un cuadro de alerta. Los navegadores basados en Webkit (piense en Chrome y Safari) ahora brindan protección contra este tipo de ataques. Sin embargo, esto no siempre fue así, y aún no está en Firefox e Internet Explorer. ¡Ay! No podemos tener eso. Mientras que la sociedad moderna dicta que un hombre es inocente hasta que se pruebe su culpabilidad, lo mismo no es cierto para el mundo de la programación. ¡Toda la entrada del usuario es culpable hasta que sea saneada! Aquí hay un ejemplo actualizado que hace esto mismo: Con esta modificación, si alguien intentara un ataque XSS, estaremos listos! Genial; ningún daño hecho! Si bien PHP se entrega con una gran cantidad de funciones nativas, seguramente habrá momentos en los que requiera la suya propia. Por suerte, son muy fáciles de escribir.. Piense en una función como una pieza de lógica reutilizable que se puede abstraer, para que pueda identificarse y llamarse, usando un nombre legible. Tal vez ejecute un club nocturno (¡no es probable si está leyendo esto!), Y necesita una manera fácil de aceptar la fecha de nacimiento de una persona, y calcular si tiene al menos veintiún años. Una función personalizada sería una excelente manera de realizar esta tarea.. El primer paso es definir una nueva función, llamada Es realmente muy simple! Ahora, solo tenemos que pasárselo al portero. Una función puede ser activada, o llamada, haciendo referencia a su nombre, seguido de un conjunto de paréntesis: Hay un problema evidente con esto Avancemos unos meses y, ahora, a la discoteca le va mejor que nunca. De hecho, le está yendo tan bien al punto que el portero no puede mantenerse al día. Su trabajo podría ser más fácil si pudiera filtrarse a través de un grupo de personas a la vez. Piense en una matriz como un contenedor de datos relacionados. Incluso podría referirse a ella como una lista: una lista de tweets, un grupo de miembros de la familia, una variedad de fechas de nacimiento. Una matriz en la última versión de PHP (5.4) puede definirse usando una lista separada por comas entre paréntesis, de esta manera: Este single Ahora, el portero puede filtrar rápidamente a través de estas fechas de nacimiento y calcular si se permite o no a la persona. UNA Observe cómo el portero declara que el año de nacimiento. Sin embargo, es posible que el portero se confunda cuando no tiene un vínculo entre el año de nacimiento de la persona y su nombre. PHP también permite matrices asociativas, que proporcionan la funcionalidad necesaria para asociar un valor dado con una clave. Aquí hay un ejemplo: Eso es mejor. Como un bono adicional, el portero puede ser un poco más amigable con la persona, ahora que sabe su nombre.. Al almacenar cadenas dentro de comillas dobles, puede anidar variables en lugar de usar concatenación. Esto puede prestarse para una sintaxis más legible. La programación orientada a objetos está más allá del alcance de este tutorial, pero, sin embargo, las clases merecen una mención. Por ahora, piense en ellos como contenedores simples para propiedades y métodos relacionados. Por ejemplo, aquí es cómo podría verse una clase que representa a una sola persona: Darse cuenta de Para usar esta clase, intente: Esto creará una nueva instancia de la En este punto, sin embargo, la clase no es demasiado útil. Agreguemos un método o función para designar al cónyuge de una persona. Este código modificado ahora incluye un Si un argumento de método está precedido por un nombre de clase ( Para buscar el nombre de mi cónyuge, podrías escribir: El concepto de programación orientada a objetos va mucho más allá de esto, pero que sea simple por ahora. Es útil pensar en las clases como sustantivos singulares: un tweet, un usuario, un cliente o un archivo.. La verdadera apreciación de este patrón solo vendrá con el tiempo.. Pon a prueba tus nuevas habilidades encontradas. ¿Cómo podría registrarse y mostrar tweets para un usuario en la página? Bueno, el primer paso podría ser definir una clase que represente una sola Aunque inicialmente puede parecer abrumador, analice este fragmento de código e intente comprender qué está sucediendo en cada paso del camino. Usted puede encontrar que es bastante legible! Una nueva pieza interesante de funcionalidad proviene de la Ahora que tenemos un contenedor lo suficientemente decente para un tweet, podemos crear un par de tweets, almacenarlos en una matriz y, finalmente, renderizarlos en la página, usando un Publicado en: $ tweet-> pubDate Al ver la salida en el navegador, debería ver algo similar a lo siguiente: Excelente, pero ¿cómo guardamos esos tweets?? Hasta ahora, has aprendido lo esencial: variables, condicionales, funciones, matrices, clases. Hay más que cubrir, pero debes investigar eso por tu cuenta, según sea necesario. El siguiente paso en tu aprendizaje es la persistencia. Por ejemplo, ¿cómo puedes mantener un registro de todos los tweets? Un servicio de tweets que no recuerda ¡Los tweets son terribles! Aquí es cuando entra en juego la idea de las bases de datos.. Piense en una tabla de base de datos como una hoja de cálculo de Excel. Puede tener cualquier número de campos, como el nombre, la edad o la dirección postal de la persona. Sin embargo, PHP no proporciona este tipo de almacenamiento de forma nativa. En cambio, la opción más común es MySQL, que es la base de datos de código abierto más popular del mundo.. La instalación de MySQL no está dentro del alcance de este tutorial. En su lugar, consulte este tutorial en Nettuts + para un recorrido completo. Este es un ejemplo simplificado para comenzar a recuperar filas de una tabla de base de datos de forma segura. No te preocupes si parece abrumador. MySQL es tu segundo nuevo idioma para aprender. La API de PDO de PHP, así como el lenguaje de consulta, requieren tiempo para aprender. Primero, necesitarás una forma de conectarte a la base de datos.. PDO es una de las tres API disponibles de PHP para conectarse a una base de datos MySQL. A continuación, agregaremos una función auxiliar para recuperar todos los registros de la tabla de tweets. Preste mucha atención a la Esta función prepara la consulta y luego recupera el conjunto de resultados completo.. Ahora, con el escenario configurado, solo necesitamos llamar a las funciones, en consecuencia. Una forma fácil de volcar el contenido de una variable es mediante el uso de $ tweet-> pubDate Como con cualquier habilidad, escribir PHP con fluidez no requiere nada más que tu tiempo. Puede llevar cientos de horas desarrollarse, pero eso está bien. Esto es divertido, ¿verdad? Debería ser! La mejor manera de aprender es hacer. ¡Construye proyectos desechables como si estuvieran pasando de moda! Las técnicas descritas en este tutorial lo guiarán a través de la primera fase, pero, sin duda, a medida que progresen sus habilidades, pasará a temas más avanzados, como marcos de PHP, patrones de diseño y desarrollo basado en pruebas. Que te diviertas!
Que es PHP?
index.php
archivo dentro de una nueva carpeta en su escritorio, y agregue:
discos compactos
a la carpeta del proyecto, y arranque el servidor con php -S localhost: 8888
. Este comando se traduce a "Ejecute un servidor y haga que sea accesible desde mi navegador en localhost, puerto 8888. "¡Adelante, pruébelo! Abra Google Chrome, navegue hasta localhost: 8888
, y verás "Hola mundo * "en la página! Nifty! eco
es una construcción de lenguaje que no hace nada más que generar un valor dado.
$ _GET
le permite concatenar (o agrupar) valores. En este caso, queremos imprimir "Hola, * "y luego el valor representado por $ _GET ['persona']
. Esto es lo que llamamos una matriz súper global. En aras de la simplicidad, piense en esto como una manera de * GET un valor de la cadena de consulta de la URL.localhost: 8888 /? person = Joe
. Si se configura correctamente, la página web debería mostrar ahora "Hola Joe."Juega con esto reemplazando Joe
con tu propio nombre ¿Observa cómo se actualiza la salida cada vez que se actualiza la página? Esto simplemente no sería posible con HTML estático.persona
clave está disponible? Quizás la cadena de consulta fue omitida por completo. En ese caso, un error será ciertamente lanzado, como el persona
la llave no existirá ¿Cual es la solución? Si bien es cierto que esto no es más que un simple ejemplo, aún es importante considerar todos los resultados posibles. Vamos a proporcionar un valor predeterminado.
$ outOfMilk = true; if ($ outOfMilk) echo 'Saliendo a la tienda'; else echo 'Se sirve el desayuno'.
$ outOfMilk
, determinará el flujo de control.
$ _GET ['persona']
está establecido (piense en esto como un seudónimo para "está disponible"), luego cree un nuevo $ persona
Variable igual a su valor. De lo contrario, aplique un valor predeterminado. Si regresa al navegador, ahora debería funcionar correctamente, independientemente de si el persona
clave existe en la cadena de consulta.Seguridad
$ _GET ['persona']
es igual a, no una cadena, sino un script?http: // localhost: 8888 /? person =
htmlspecialchars
es una función nativa de PHP que traduce varios símbolos a sus contrapartes de entidad. Y
se convierte en Y
, <
se convierte en <
, etc. Esto lo convierte en la herramienta perfecta para proporcionar ese bit de seguridad adicional.. is meaningless if it is converted to
before being executed. The user will simply see:
Hello,
Funciones
isAdult
. Las funciones pueden aceptar entrada externa, que luego puede ser operada. Esto permite que los datos devueltos de la función sean dinámicos. En este caso, para determinar si una persona es una persona adulta, necesitamos saber su año de nacimiento. El paso final es volver ya sea cierto
o falso
, depende de si el año actual menos la fecha de nacimiento de la persona es al menos veintiuno.function isAdult ($ yob) $ currentYear = 2013; return $ currentYear - $ yob> = 21;
isAdult ()
. Sin embargo, si la función requiere un argumento, puede especificarla dentro de estos paréntesis, como se ilustra a continuación:if (isAdult (1985)) echo '¡Adelante!'; else echo 'Por favor, vete ahora, antes de que llame a tu madre.';
isAdult
función. El año en curso ha sido codificado. Claro, funcionará a lo largo de 2013, pero ¿y el año que viene? Parece que este valor, también, debe ser dinámico. PHP proporciona una fecha
Función, que se puede utilizar para calcular el año actual. Como tal, la función se puede actualizar a:function isAdult ($ yob) $ currentYear = date ('Y'); return $ currentYear - $ yob> = 21;
Arrays
$ grupo = [1985, 1990, 1992, 1997];
$ grupo
La variable ahora contiene múltiples fechas de nacimiento. Se puede acceder a los valores dentro de él especificando un índice, como $ grupo [0]
. Las matrices son lo que llamamos estar basado en cero. En la traducción, esto significa que el primer elemento, o clave, en la matriz tendrá un índice de cero. Como tal, para acceder al valor de 1992, usted haría referencia a $ grupo [2]
.para cada
declaración puede ser utilizada para este tipo de filtrado.$ grupo = [1985, 1990, 1992, 1997]; foreach ($ group as $ yob) if (isAdult ($ yob)) echo '¡Adelante!'; else echo 'Por favor, vete ahora, antes de que llame a tu madre.';
para cada
persona en el grupo
debe estar contenido dentro de la variable, $ yob
. A continuación, como lo hizo antes, pasa ese valor a la isAdult
función, y procede en consecuencia.$ group = ['John' => 1985, 'Susan' => 1990, 'Joe' => 1992, 'Sara' => 1997];
$ group = ['John' => 1985, 'Susan' => 1990, 'Joe' => 1992, 'Sara' => 1997]; foreach ($ group as $ name => $ yob) if (isAdult ($ yob)) echo "¡Adelante, $ name!"; else echo "Por favor, deje ahora, $ nombre, antes de que llame a su madre.";
Las clases
clase Persona nombre público $; $ edad pública función pública __construct ($ name, $ age) $ this-> name = $ name; $ this-> age = $ age;
__construir()
¿método? Esto se conoce como un método mágico y se activará inmediatamente después de la instanciación. Cuando se dispara este método, aceptará un nombre y una edad, y luego lo adjuntará al objeto.$ me = nueva Persona ('Jeffrey', 28);
Persona
clase. Esta instancia, que se almacena en el $ yo
variable, puede ser referido como un objeto. Ahora, no hay nada que le prohíba crear múltiples instancias de esta clase - y, de hecho, en proyectos del mundo real, ¡lo hará! La clase es solo un plano.clase Persona nombre público $; $ edad pública cónyuge público función pública __construct ($ name, $ age) $ this-> name = $ name; $ this-> age = $ age; función pública casarse (persona $ cónyuge) $ this-> cónyuge = $ cónyuge; $ me = nueva persona ('Jeff', 28); $ her = nueva Persona ('Allison', 28); $ me-> casarse ($ ella);
casar()
método que actualizará un $ cónyuge
Propiedad sobre el objeto. Ahora, tienes un enlace directo entre las dos personas.
Persona $ cónyuge
), referido como sugerencias de tipo, esto designa que el parámetro debe ser una instancia de la clase dada, o se producirá un error.echo $ me-> cónyuge-> nombre; // Allison
Las manos en
Pío
. Esta clase debe almacenar propiedades para el cuerpo del tweet, así como su fecha de publicación. Además, debe asegurarse de que el cuerpo del tweet no exceda los 140 caracteres. Aquí hay una primera puñalada en una clase así:clase Tweet public $ body; public $ pubDate; función pública __construct ($ body) $ this-> setBody ($ body); $ this-> setPubDate (new DateTime); función pública setBody ($ body) if (strlen ($ body)> 140) lanza la nueva excepción InvalidArgumentException; $ this-> body = $ body; función pública setPubDate (DateTime $ date) $ this-> pubDate = $ date-> format ('Y / m / d H: i: s');
setBody
método. Si el texto proporcionado supera los 140 caracteres, que podemos calcular utilizando PHP Strlen
función, entonces deberíamos hacer una excepción a eso, porque rompe las reglas de un tweet. Se puede lanzar una excepción usando la sintaxis., lanzar el nuevo tipo de excepción
.para cada
declaración.$ tweets = []; # agregar dos tweets nuevos a la matriz $ tweets [] = new Tweet ('Ir a la tienda'); $ tweets [] = new Tweet ('Back from the store!'); # Filtrar a través, y mostrar en la página. foreach ($ tweets como $ tweet) echo "
$ tweet-> cuerpo
"; eco "
Almacenamiento
function connect () $ conn = new PDO ('mysql: host = localhost; dbname = DB_NAME', 'USERNAME', 'PASSWORD'); $ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION); devuelve $ conn;
consulta
argumento del método, SELECCIONAR * DE tweets
. Este es un lenguaje especial para consultar la base de datos. En este caso, estamos utilizando el *
símbolo para hacer referencia a todas las filas. Como tal, estamos seleccionando todas las filas de la tabla, llamadas tweets
.función fetchTweets ($ conn) $ stmt = $ conn-> query ('SELECT * FROM tweets'); devuelve $ stmt-> fetchAll (PDO :: FETCH_OBJ);
# Conectar al DB $ conn = connect (); # Obtenga todas las filas de la tabla de asistentes var_dump (fetchTweets ($ conn));
var_dump
función. Si pasas la salida de fetchTweets ($ conn)
Para esta función, al verlo en el navegador, verás algo como:var_dump
es útil para la depuración, pero para fines de producción, es mejor filtrar los resultados y mostrarlos en la página correctamente. los para cada
declaración, con la que ya está familiarizado, manejará el trabajo bastante bien!$ tweets = fetchTweets ($ conn); foreach ($ tweets como $ tweet) echo "
$ tweet-> cuerpo
"; eco "
Conclusión
Sugerencias Tuts + Recurso Premium