Professional Documents
Culture Documents
REPORTE DE INVESTIGACÓN
SOBRE EL LENGUAJE PHP
15011122
6” A”
22/01/2018
Contenido
Introducción............................................................................................................................... 3
Marco teórico............................................................................................................................. 4
¿Qué es PHP? ........................................................................................................................... 5
Uso ............................................................................................................................................... 5
Tipo de paradigma de programación que utiliza PHP .................................................... 6
Alfabeto de PHP ........................................................................................................................ 7
Lista de componentes léxicos del analizador ................................................................ 15
Analizador Semántico (Gramática) .................................................................................... 22
Herramientas de PHP ............................................................................................................ 28
conclusión................................................................................................................................ 29
Bibliografía .................................................................................................................................. 29
2
Investigación de PHP
Introducción
En este reporte mostraré que es PHP, sus paradigmas, su alfabeto con el que
podemos hacer cadenas más complejas para realizar una acción determinada o
solucionar un problema concreto, veremos la forma correcta de declarar
variables, usar paqueterías, su gramática en general (BNF) para programar de
forma correcta y verificaremos las herramientas con las que cuenta para poder
desarrollar los programas.
Además de esto cuenta con una extensa documentación oficial en una gran
variedad de idiomas, cuneta con una gran cantidad de extensiones para poder
conectar con base de datos, para el manejo de sockets, y generar
dinámicamente páginas web.
3
Investigación de PHP
Marco teórico
Podemos hacer esto gracias a su extenso alfabeto con el que cuenta, ya que
tenemos operadores lógicos que nos sirven para realizar diversas operaciones
con un nivel de complejidad alto en nuestros programas.
Además, cuneta con sunciones, una de sus herramientas más importantes que
le ayuda a ejecutar un conjunto de acciones o rutinas que a lo largo del programa
van hacer usadas múltiples veces.
Todo esto conlleva cierta gramática para poder utilizarlo como por ejemplo el
declarar y usar una variable para introducir o asignar cualquier valor o dato, estas
pueden variar, la ventaja de PHP es que no es necesario declarar una variable
ya que simplemente anteponiendo el carácter $ al nombre de la variable estamos
indicando que es una variable.
4
Investigación de PHP
¿Qué es PHP?
PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de
código abierto muy popular especialmente adecuado para el desarrollo web y
que puede ser incrustado en HTML.
Uso
En lugar de usar muchos comandos para mostrar HTML (como en C o en Perl),
las páginas de PHP contienen HTML con código incrustado que hace "algo". El
código de PHP está encerrado entre las etiquetas especiales de comienzo y final
<?php y ?> que permiten entrar y salir del "modo PHP".
Lo que distingue a PHP de algo del lado del cliente como Javascript es que el
código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El
cliente recibirá el resultado de ejecutar el script, aunque no se sabrá el código
subyacente que era.
5
Investigación de PHP
Tipo de paradigma de programación que utiliza PHP
6
Investigación de PHP
Alfabeto de PHP
PHP cuenta con una extensa cantidad de caracteres y palabras reservadas que
nos ayudan a crear nuestros programas e incluso cuentan con caracteres para
realizar tareas un poco más complejas en nuestros programas, estos se
muestran continuación.
Entrecomillado doble
Si un string está delimitado con comillas dobles ("), PHP interpretará las
siguientes secuencias de escape como caracteres especiales como lo muestra
la Tabla 1.
Caracteres escapados
Secuencia Significado
\n avance de línea (LF o 0x0A (10) en ASCII)
\r retorno de carro (CR o 0x0D (13) en ASCII)
\t tabulador horizontal (HT o 0x09 (9) en ASCII)
\v tabulador vertical (VT o 0x0B (11) en ASCII) (desde PHP
5.2.5)
\e escape (ESC o 0x1B (27) en ASCII) (desde PHP 5.4.4)
\f avance de página (FF o 0x0C (12) en ASCII) (desde PHP
5.2.5)
\\ barra invertida
\$ signo de dólar
\" comillas dobles
7
Investigación de PHP
Al desarrollar cualquier programa empleamos normalmente operadores que nos
sirven para realizar diversas operaciones que otorgan un cierto grado de
complejidad a nuestros programas, ya que de otro modo el programa realizaría
siempre lo mismo y no sería útil.
Precedencia de operadores
Asociatividad Operadores Información adicional
no asociativo clone new clone and new
izquierda [ array()
derecha ** aritmética
8
Investigación de PHP
derecha ++ -- ~ (int) (float) (string) (array) tipos e incremento/decremento
(object) (bool) @
no asociativo instanceof tipos
derecha ! lógico
izquierda */% aritmética
izquierda +-. aritmética y string
izquierda << >> bit a bit
no asociativo < <= > >= comparación
no asociativo == != === !== <> <=> comparación
izquierda & bit a bit y referencias
izquierda ^ bit a bit
izquierda | bit a bit
izquierda && lógico
izquierda || lógico
derecha ?? comparación
izquierda ?: ternario
derecha = += -= *= **= /= .= %= &= |= ^= asignación
<<= >>=
izquierda and lógico
izquierda xor lógico
izquierda or
Operadores lógicos
9
Investigación de PHP
En PHP contamos con operadores de comparación ya que no sólo se utilizan en
los filtros. Si no que también son una parte fundamental dentro de una estructura
compleja y elaborada, estos se muestran en la Tabla 1.4.
$a <=> Nave Un integer menor que, igual a, o mayor que cero cuando $a
$b espacial es respectivamente menor que, igual a, o mayor que $b.
Disponible a partir de PHP 7.
$a ?? Fusión El primer operando de izquierda a derecha que exista y no
$b ?? de null sea NULL. NULL si no hay valores definidos y no son NULL.
$c Disponible a partir de PHP 7.
10
Investigación de PHP
En PHP existen los operadores de incremento y decremento que
son operadores unarios que agregan o sustraen uno de sus operandos,
respectivamente. Son normalmente implementados en lenguajes de
programación imperativos, como se muestra en la Tabla 1.5.
Operadores de incremento/decremento
Ejemplo Nombre Efecto
++$a Pre-incremento Incrementa $a en uno, y luego retorna $a.
$a++ Post-incremento Retorna $a, y luego incrementa $a en uno.
--$a Pre-decremento Decrementa $a en uno, luego retorna $a.
$a-- Post-decremento Retorna $a, luego decrementa $a en uno.
PHP cuneta con operadores para arrays con los que podemos igualar o comprar
como se muestra en la Tabla 1.6.
Tabla 1.6. Operadores para arrays
Operadores para arrays
Ejemplo Nombre Resultado
$a + $b Unión Unión de $a y $b.
$a == Igualdad TRUE si $a i $b tienen las mismas parejas clave/valor.
$b
$a === Identidad TRUE si $a y $b tienen las mismas parejas clave/valor en el mismo
$b orden y de los mismos tipos.
$a != $b Desigualdad TRUE si $a no es igual a $b.
$a <> Desigualdad TRUE si $a no es igual a $b.
$b
$a !== No-
$b identidad
11
Investigación de PHP
12
Investigación
Ilustración de PHP
2-Alfabeto de php
Las Palabras Reservadas en PHP son utilizadas de forma especial para definir
métodos, funciones, clases, etc. en otras palabras son constructores del lenguaje,
debido a que son reservadas no deben ser utilizadas como nombres de variables o
funciones, las palabras reservadas están a continuación en la Tabla 1.7.
13
Investigación de PHP
eddeclare Fija directivas de ejecución para un bloque de código.
endif;, Alternativa para estructuras de control.
endwhile;,
endfor;,
endforeach;,
o endswitch;
eval() Permite evaluar una cadena como código Php, su uso es peligroso
debido a que permite la ejecución de código Php arbitrario,
viéndose comprometida la seguridad de la aplicación.
final Impide que clases hijas sobre escriban un método.
finally Utilizado en conjunto con la instrucción try para capturar
excepciones.
for Blucle para realizar iteraciones o ciclos repetitivos.
foreach Permite de forma sencilla recorrer arrays.
function Esta parabra reservada permite declarar una función.
global Permite acceder a variables declaradas dentro de una función.
goto Es utilizado para saltar de una sección del programa a otra.
if Es utilizado para la ejecución condicional de fragmentos de código
siempre y cuando se cumpla o no una condición.
implements Permite implementar una interfaz.
include Esta palabra reservada incluye y evalúa el archivo establecido.
Include_once Similar a la sentencia include, teniendo como diferencia que si el
archivo a incluir ya ha sido ejecutado no volverá a incluirlo.
instanceof Determina si una variable es un objeto instanciado de una clase.
interface Especifica que métodos deben ser implementados por una clase.
isset() Permite determinar si una variable está definida y además no es
null.
list() Asigna variables a manera de array.
namespace Proporcionan una forma de agrupar funciones, clases, interfaces
que se encuentran relacionadas.
or Utilizado para validar cuando una de dos condiciones son
verdaderas, dando así true.
print Imprime o muestra una cadena de caracteres.
private Mediante private las propiedades o métodos solo son accesibles
desde la clase donde se definió.
14
Investigación de PHP
public Mediante public las propiedades y métodos son accesibles desde
donde sea.
protected Mediante protected las propiedades y métodos son accesibles solo
desde la misma clase o clases heredadas.
require Siendo similar a include, varía solo que en caso de fallar produce un
error que detiene el script.
require_once El archivo no es incluido si ya se ha realizado con anterioridad.
return Devuelve el control del programa al módulo que lo invoca.
static Establece la existencia de una variable en el ámbito local de una
función.
throw El momento en que una excepción es lanzada.
try Permite la captura fácilmente de excepciones, esta instrucción está
acompañada normalmente por catch o finally.
unset Destruye una variable.
var Utilizado para declarar propiedades, sin embargo esta instrucción
ya es obsoleta.
while Realiza un bucle una infinidad de veces siempre que se cumpla una
condición.
xor Operador lógico que retorna verdadero si una de dos condiciones
es verdadera pero no ambas.
Algunas partes del lenguaje PHP son representadas internamente por tipos
como T_SR. PHP produce identificadores como este a la hora de analizar
errores.
15
Investigación de PHP
Tabla 2. Componente léxico
Componente léxico
Elemento Sintaxis Referencia
T_ABSTRACT abstract Abstracción de clases
(disponible desde PHP 5.0.0)
T_AND_EQUAL &= operadores de asignación
T_ARRAY array() array(), sintaxis de array
T_ARRAY_CAST (array) conversión de tipos
T_AS as foreach
T_BAD_CHARACTER todo lo que haya por debajo
de ASCII 32 excepto \t (0x09),
\n (0x0a) y \r (0x0d)
T_BOOLEAN_AND && operadores lógios
T_BOOLEAN_OR || operadores lógicos
T_BOOL_CAST (bool) o conversión de tipos
(boolean)
T_BREAK break break
T_CALLABLE callable callable
T_CASE case switch
T_CATCH catch Excepciones (disponible
desde PHP 5.0.0)
T_CHARACTER ya no se utiliza
T_CLASS class clases y objetos
T_CLASS_C __CLASS__ constantes mágicas
T_CLONE clone clases y objetos
T_CLOSE_TAG ?> o %> salir de HTML
T_COMMENT // o #, y /* */ comentarios
T_CONCAT_EQUAL .= operadores de asignación
T_CONST const constantes
T_CONSTANT_ENCAPSED "foo" o 'bar' sintaxis de string
_STRING
T_CONTINUE continue continue
16
Investigación de PHP
T_CURLY_OPEN {$ sintaxis compleja
T_DEC -- operadores de
incremento/decremento
T_DECLARE declare declare
T_DEFAULT default switch
T_DIR __DIR__ constantes mágicas
(disponible desde PHP 5.3.0)
T_DIV_EQUAL /= operadores de asignación
T_DNUMBER 0.12, etc. números de punto flotante
T_DOC_COMMENT /** */ comentarios tipo PHPDoc
T_DO do do..while
T_DOLLAR_OPEN_CURLY ${ sintaxis compleja
_BRACES
T_DOUBLE_ARROW => sintaxis de array
T_DOUBLE_CAST (real), conversión de tipos
(double) o
(float)
T_DOUBLE_COLON :: véase
T_PAAMAYIM_NEKUDOTA
YIM más abajo
T_ECHO echo echo
T_ELLIPSIS ... argumentos de función
(disponible desde PHP 5.6.0)
T_ELSE else else
T_ELSEIF elseif elseif
T_EMPTY empty empty()
T_ENCAPSED_AND_WHIT " $a" parte constante de un string
ESPACE con variables
T_ENDDECLARE enddeclare declare, sintaxis alternativa
T_ENDFOR endfor for, sintaxis alternativa
T_ENDFOREACH endforeach foreach, sintaxis alternativa
T_ENDIF endif if, sintaxis alternativa
T_ENDSWITCH endswitch switch, sintaxis alternativa
17
Investigación de PHP
T_ENDWHILE endwhile while, sintaxis alternativa
T_END_HEREDOC sintaxis de heredoc
T_EVAL eval() eval()
T_EXIT exit o die exit(), die()
T_EXTENDS extends extends, clases y objetos
T_FILE __FILE__ constantes mágicas
T_FINAL final Palabra clave Final
T_FINALLY finally Excepciones (disponible
desde PHP 5.5.0)
T_FOR for for
T_FOREACH foreach foreach
T_FUNCTION function o funciones
cfunction
T_FUNC_C __FUNCTION constantes mágicas
__
T_GLOBAL global ámbito de las variables
T_GOTO goto (disponible desde PHP 5.3.0)
T_HALT_COMPILER __halt_compil __halt_compiler (disponible
er() desde PHP 5.1.0)
T_IF if if
T_IMPLEMENTS implements Interfaces de objetos
T_INC ++ operadores de
incremento/decremento
T_INCLUDE include() include
T_INCLUDE_ONCE include_once( include_once
)
T_INLINE_HTML texto fuera de PHP
T_INSTANCEOF instanceof operadores de tipo
T_INSTEADOF insteadof Rasgos (Traits) (disponible
desde PHP 5.4.0)
T_INT_CAST (int) o (integer) conversión de tipos
T_INTERFACE interface Interfaces de objetos
T_ISSET isset() isset()
18
Investigación de PHP
T_IS_EQUAL == operadores de comparación
T_IS_GREATER_OR_EQUA >= operadores de comparación
L
T_IS_IDENTICAL === operadores de comparación
T_IS_NOT_EQUAL != o <> operadores de comparación
T_IS_NOT_IDENTICAL !== operadores de comparación
T_IS_SMALLER_OR_EQUA <= operadores de comparación
L
T_SPACESHIP <=> operadores de comparación
(disponible desde PHP 7.0.0)
T_LINE __LINE__ constantes mágicas
T_LIST list() list()
T_LNUMBER 123, 012, números enteros
0x1ac, etc.
T_LOGICAL_AND and operadores lógicos
T_LOGICAL_OR or operadores lógicos
T_LOGICAL_XOR xor operadores lógicos
T_METHOD_C __METHOD_ constantes mágicas
_
T_MINUS_EQUAL -= operadores de asignación
T_MOD_EQUAL %= operadores de asignación
T_MUL_EQUAL *= operadores de asignación
T_NAMESPACE namespace espacios de nombres
(disponible desde PHP 5.3.0)
T_NS_C __NAMESPA espacios de nombres
CE__ (disponible desde PHP 5.3.0)
T_NS_SEPARATOR \ espacios de nombres
(disponible desde PHP 5.3.0)
T_NEW new clases y objectos
T_NUM_STRING "$a[0]" array de índice numérico
dentro de un string
T_OBJECT_CAST (object) conversión de tipos
T_OBJECT_OPERATOR -> clases y objetos
19
Investigación de PHP
T_OPEN_TAG <?php, <? o salir de HTML
<%
T_OPEN_TAG_WITH_ECH <?= o <%= salir de HTML
O
T_OR_EQUAL |= operadores de asignación
T_PAAMAYIM_NEKUDOTA :: ::. También se define como
YIM T_DOUBLE_COLON.
T_PLUS_EQUAL += operadores de asignación
T_POW ** operadores aritméticos
(disponible desde PHP 5.6.0)
T_POW_EQUAL **= operadores de asignación
(disponible desde PHP 5.6.0)
T_PRINT print() print
T_PRIVATE private clases y objetos
T_PUBLIC public clases y objetos
T_PROTECTED protected clases y objetos
T_REQUIRE require() require
T_REQUIRE_ONCE require_once( require_once
)
T_RETURN return valores de retorno
T_SL << operadores a nivel de bits
T_SL_EQUAL <<= operadores de asignación
T_SR >> operadores a nivel de bits
T_SR_EQUAL >>= operadores de asignación
T_START_HEREDOC <<< sintaxis de heredoc
T_STATIC static ámbito de las variables
T_STRING parent, self, se comparan identificadores,
etc. p.ej. palabras clave como
parent y self, nombres de
funciones, nombres de clases
y más. Véase también
T_CONSTANT_ENCAPSED
_STRING.
20
Investigación de PHP
T_STRING_CAST (string) conversión de tipos
T_STRING_VARNAME "${a sintaxis compleja
T_SWITCH switch switch
T_THROW throw Excepciones
T_TRAIT trait Rasgos (Traits) (disponible
desde PHP 5.4.0)
T_TRAIT_C __TRAIT__ __TRAIT__ (disponible desde
PHP 5.4.0)
T_TRY try Excepciones
T_UNSET unset() unset()
T_UNSET_CAST (unset) conversión de tipos
T_USE use espacios de nombres
(disponible desde PHP 5.3.0;
reservada desde PHP 4.0.0)
T_VAR var clases y objetos
T_VARIABLE $foo variables
T_WHILE while while, do..while
T_WHITESPACE \t \r\n
T_XOR_EQUAL ^= operadores de asignación
T_YIELD yield generadores (disponible
desde PHP 5.5.0)
21
Investigación de PHP
Analizador Semántico (Gramática)
Como declarar variables: En PHP las variables se representan con un signo de dólar
seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas
y mayúsculas.
ejemplo
<?php
$var = 'Roberto';
$Var = 'Juan';
echo "$var, $Var"; // imprime "Roberto, Juan"
Uso booleano; imprime 'false' (Vea operadores ternarios para más información sobre e
sta sintaxis)
echo($booleano_indefinido ? "true\n" : "false\n");
22
Investigación de PHP
Uso de array; imprime array(1) { [3]=> string(3) "def" }
$array_indefinida[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($array_indefinida);
Etiquetas de PHP
Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que
son <?php y ?>, y que indican a PHP dónde empezar y finalizar la interpretación
del código.
Separación de instrucciones
<?php
echo 'Esto es una prueba';
?>
Comentarios
<?php
echo 'Esto es una prueba'; // Esto es un comentario al estilo de c++ de una sola línea
/* Esto es un comentario multilínea
y otra lína de comentarios */
?>
Inicialización de objetos
Para crear un nuevo object, utilice la sentencia new para instanciar una clase:
<?php
class foo
{
$bar = new foo;
$bar->hacer_algo();}?>
23
Investigación de PHP
Recursos
Un valor tipo resource es una variable especial, que contiene una referencia a
un recurso externo. Los recursos son creados y usados por funciones especiales.
if
if (expr)
sentencia
else
<?php
if ($a > $b) {
echo "a es mayor que b";
} else {
echo "a NO es mayor que b";
}
?>
while
Los bucles while son el tipo más sencillo de bucle en PHP. Se comportan igual
que su contrapartida en C. La forma básica de una sentencia while es:
while (expr)
sentencia
do-while
Los bucles do-while son muy similares a los bucles while, excepto que la
expresión verdadera es verificada al final de cada iteración en lugar que al
principio. La diferencia principal con los bucles while es que está garantizado que
corra la primera iteración de un bucle do-while
24
Investigación de PHP
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
for
Los bucles for son los más complejos en PHP. Se comportan como sus
homólogos en C. La sintaxis de un bucle for es:
foreach
break
switch
switch ($i) {
case 0:
echo "i es igual a 0";
break;
case 1:
echo "i es igual a 1";
break;
}
25
Investigación de PHP
Usar paquetería
include_once
<?php
include_once "a.php"; // esto incluirá a.php
include_once "A.php"; // esto incluirá a.php ¡otra vez! (sólo PHP 4)
?>
Devolver valores
<?php
function cuadrado($núm)
{
return $núm * $núm;
}
Constructores y destructores
Constructor
26
Investigación de PHP
Destructor
El método destructor será llamado tan pronto como no haya otras referencias a
un objeto determinado, o en cualquier otra circunstancia de finalización.
Abstracción de clases
<?php
abstract class ClaseAbstracta
{
Concatenar variables
Esto consiste en que el valor de una variable se convierta en otra variable. Para
ello utilizamos dos signos dólar seguidos.
27
Investigación de PHP
Herramientas de PHP
Es formateador
PHP de forma nativa no tiene un Depurador, pero existen plugins que se pueden
instalar para poder debugearlo o podemos hacer esta acción desde el
navegador, pero esto no lo tiene de forma nativa php.
28
Investigación de PHP
Conclusión
con este reporte de PHP como lenguaje en sí, nos podemos dar cuenta del
potencial que tiene y de sus grandes características con las que cuenta que
gracias a ellas lo han hecho uno de los lenguajes de programación más
populares, ya que contamos con una gran variedad de herramientas que nos
ayudan a facilitar un poco el trabajo como por ejemplo que existen componentes
que se pueden instalar al PHP para tener un depurador, y en navegador nos
funciona de interprete ya que lee el código en .php y nos abre la página o
aplicación creada, nos la traduce y podemos editar, dar formato a el código
escrito y nos ayuda a optimizarlo, cuenta con una gran cantidad de
caracteres(abecedario) con el que podemos hacer desde la instrucción más
sencilla hasta la más compleja que nos podamos imaginar, y su gramática es
muy similar a las de otros lenguajes de programación, eso lo hace fácil de usar
si ya tenemos conocimientos previos de programación, y ya que contiene
múltiples paradigmas que nos ayuda a desarrollar y solucionar tareas o
problemas complejos planteados.
Bibliografía
Group, T. P. (2016). PHP. Obtenido de PHP: http://php.net/manual/es/getting-started.php
Web, A. (2013). manual de PHP de Aprende Web. Obtenido de manual de PHP de Aprende
Web: http://aprende-web.net/php
29
Investigación de PHP