Sintaxis PHP
Contents
Sintaxis PHP#

Sintáxis básica de PHP 7.4
Índice
Elementos básicos del lenguaje#
Instalación#
Instalación:
sudo apt install php7.4
Extensión de archivos: .php
Comentarios#
Comentarios de una sola línea:
1// Comentario de una sola línea
Comentarios multilínea:
1/* Este comentario
2tiene más de una línea.
3Puede servir para escribir
4un manual u otras cosas.
5*/
Entrada y salida estandar#
Datos de entrada y salida a través de la consola y/o el navegador.
1<?php
2 // echo:
3 echo "hola mundo";
4
5 // print:
6 print("Hola mundo");
7?>
Atención
No existe una entrada estandar como tal, en todo caso sería mediante métodos GET, POST, etc.
Estructura en php#
Código PHP puro:
1<?php
2 $variable = 20;
3
4 if($valor == 20){
5 echo "el valor es igual";
6 }
7?>
código php junto a HTML:
1<?php
2 $titulo = "practicando PHP";
3?>
4
5<html>
6 <head>
7 </head>
8 <body>
9 <h1><?php echo $titulo; ?></h1>
10 </body>
11</html>
También podemos cargar etiquetas HTML con PHP:
1<?php
2 echo "<p>Etiqueta incrustada desde php</p>";
3?>
Atención
Las líneas terminan en ; obligatóriamente.
Concatenación#
Concatenación de variables y cadenas se realiza con .
1<?php
2 echo "cadena concatenada a " . "otra cadena";
3
4 echo "resultado en variable: " . $variable;
5?>
PHP-CLI - Comandos de PHP#
Comandos de PHP:
php -v: versión usada
php -m: módulos cargados
php -i: configuración de php actual
php -r: enviar código a ejecutar ej:
echo "hola mundo"
php archivo.php: ejecutar un archivo php.
php -S: ejecutar servidor php
php -S localhost:8000
php -S -t: establecer un directorio inicial de arrance del server:
php -S localhost:8000 -t inicial/
Variables y tipos de datos#
Declaración, asignación y tipo:
1<?php
2 $cadena = "Cadena de texto";
3 $entero = 27;
4 $decimal = 23.27;
5 $booleano = true; // false
6 $array = ['datos', 2, 3.2, false];
7 $array_asociativo = [
8 'nombre' => 'Pepe',
9 'telefono' => 753283723
10 ];
11
12?>
Constantes:
1<?php
2 // funcion define:
3 define("CONSTANTE", "valor de la misma");
4 echo CONSTANTE;
5
6 // palabra reservada const:
7 const constante = "valor de la constante";
8 echo constante;
9?>
Operadores#
Operadores aritméticos#
Operaciones aritméticas:
1<?php
2 $sumar = 3 + 6;
3 $restar = 7 * 9;
4 $multiplicar = 11 * 6;
5 $dividir = 13 / 20;
6 $resto = 54 % 7;
7?>
Incremento y decremento:
1<?php
2 $i++;
3 ++$i;
4 --$i;
5 $i--;
6?>
Asignar operación:
1<?php
2 // la variable debe tener un valor asignado:
3 $resultado = 0
4
5 $resultado += 12;
6 $resultado -= 16;
7 $resultado *= 19;
8 $resultado /= 6;
9?>
Operadores relacionales#
Validación entre dos números.
Mayor que: >.
Menor que: <.
Mayor o igual que: >=.
Menor o igual que: <=.
Igual que: ==.
Operadores lógicos#
Expresiones de operaciones lógicas.
and: &&.
or: ||.
not: !.
Estructuras de control#
Condicional if#
if sencillo:
1<?php
2 $edad = 18;
3
4 if($edad >= 18){
5 echo "Eres mayor de edad";
6 }
7?>
if / else:
1<?php
2 $edad = 15;
3
4 if($edad >= 18){
5 echo "Eres mayor de edad";
6 }else{
7 echo "Eres menor de edad";
8 }
9?>
else-if:
1<?php
2 $edad = 45;
3
4 if($edad >= 65){
5 echo "Eres un anciano";
6 }
7 else if($edad >= 18){
8 echo "Eres mayor de edad";
9 }else{
10 echo "Eres menor de edad";
11 }
12?>
if alternativo:
1<?php
2 $edad = 73;
3
4 if($edad >= 65):
5 echo "Eres un anciano";
6 else if($edad >= 18):
7 echo "Eres mayor de edad";
8 else:
9 echo "Eres menor de edad";
10 endif;
11?>
Nota
Aparte de este if, existe for, foreach y while que comparten la misma forma de operar.
Operador ternario:
1<?php
2 $edad = 35;
3 $comprobarEdad = $edad >= 18 ? "Eres mayor de edad" : "Eres menor de edad";
4
5 echo $comprobarEdad;
6?>
Condicional Switch#
Estructura de un switch:
1<?php
2 $color = "verde";
3
4 switch($color){
5 case ("rojo"):
6 echo "El color es rojo";
7 break;
8 case ("verde"):
9 echo "El color es verde";
10 break;
11 case ("azul"):
12 echo "El color es azul";
13 break
14 default:
15 echo "No se reconoce el color";
16 }
17?>
Bucle for#
for básico:
1<?php
2 for($i = 0; $i <= 10; $i++){
3 echo "Repetición nº " . $i;
4 }
5?>
foreach:
1<?php
2 $electrodomesticos = ["lavadora","nevera","microondas"];
3
4 foreach($elecrodomesticos as $aparato){
5 echo $aparato . "<br>";
6 }
7?>
foreach clave / valor:
1<?php
2 $electrodomesticos = [
3 "producto" => "Nevera",
4 "modelo" => "FX27",
5 "marca" => "Fagor",
6 "precio" => 783.23
7 ];
8
9 foreach($elecrodomesticos as $key => $value){
10 echo $key . ": " . $value . "<br>";
11 }
12?>
Bucle while#
While sencillo:
1<?php
2 $num = 0;
3
4 while($num < 10){
5 echo "código de mensaje - " . $num;
6 $num++;
7 }
8?>
do-while:
1<?php
2 $num = 0;
3
4 do{
5 echo "código de mensaje - " . $num;
6 $num++;
7 }
8 while($num < 10);
9?>
Detener secuenda de script#
1<?php
2 for($i = 0; $i <= 10; $i++){
3 if($i == 5){
4 echo "Ya has llegado a 5 y no más";
5 die;
6 }
7 }
8 echo "Esta frase no se mostrará";
9?>
Tipos de datos avanzados#
Arrays#
Declaración tradicional:
1<?php
2 $arreglo = ["cadena", 20, 18.27, false, ["otra cadena", 23, 18.77]];
3?>
Declaración con función array():
1<?php
2 $arreglo = array("cadena", 20, 18.27, false);
3?>
Array multidimensional:
1<?php
2 $operadores = array(
3 ["OPERADOR", "DENOMINACIÓN"],
4 ["suma", "+"],
5 ["resta", "-"],
6 ["multiplicación", "*"],
7 ["división", "/"],
8 ["resto", "%"]
9 );
10
11 // ejemplo recorrido array multidimensional:
12 echo "<table border=1>";
13
14 foreach($operadores as $key => $value){
15 echo "<tr>";
16 foreach($operadores[$key] as $operador){
17 echo "<td>" . $operador . "</td>";
18 }
19 echo "</tr>";
20 }
21
22 echo "</table>";
23?>
Imprimir y asignar valores:
1<?php
2 echo $arreglo[2];
3 $arreglo[2] = "Veinte";
4?>
Arrays asociativos#
Declaración tradicional:
1<?php
2 $asociaciones = [
3 "clave" => "valor",
4 "nombre" => "Paco",
5 "edad" => 27,
6 "peso" => 77.32,
7 "cuota" => true
8 ];
9?>
Declaración con función array():
1<?php
2 $asociaciones = array(
3 "clave" => "valor",
4 "nombre" => "Paco",
5 "edad" => 27,
6 "peso" => 77.32,
7 "cuota" => true
8 );
9?>
Array multidimensional:
1<?php
2 $asociaciones = [
3 "clave" => "valor",
4 "nombre" => "Paco",
5 "edad" => 27,
6 "peso" => 77.32,
7 "cuota" => true,
8 "subscripciones" => [
9 "netflix" => true,
10 "hbo" => false,
11 "prime" => true
12 ]
13 ];
14
15 foreach($asociaciones as $key => $value){
16 echo "<ul>";
17 if($key != "subscripciones"){
18 echo "<li>" . $key . ": " . $value . "</li>";
19 }else{
20 echo "<li>Subscripciones: ";
21 foreach($asociaciones[$key] as $key => $value){
22 echo "<br>";
23 if($value){
24 echo "- " . $key . ": si";
25 }else{
26 echo "- " . $key . ": no";
27 }
28 }
29 }
30 echo "</ul>";
31 }
32?>
Imprimir y asignar valores:
1<?php
2 echo $asociaciones["nombre"];
3 $arreglo["subscripciones"]["netflix"] = "subscrito";
4?>
Control de errores#
1<?php
2 try{
3 throw new Exception(" No existe archivo de configuracion ");
4 }catch(Exception $e){
5 echo " Hubo un error" . $e->getMessage();
6 }finally{
7 echo "Cerrando BD";
8 }
9?>
Programación modular#
Funciones#
Procedimienos:
1<?php
2 function saludar(){
3 echo "Hola persona";
4 }
5
6 saludar();
7?>
funciones:
1<?php
2 function saludar(){
3 return "Hola persona";
4 }
5
6 echo saludar();
7?>
uso de parámetros:
1<?php
2 function saludar($nombre){
3 return "Hola " . $nombre;
4 }
5
6 echo saludar("Pepe");
7?>
Funciones anónimas:
1<?php
2 $tuNombre = function($nombre){
3 return "Hola ". $nombre;
4 };
5
6 echo $tuNombre("Pepe");
7?>
Ámbito global:
1<?php
2 $nombre = "alberto";
3
4 $saludar = function(){
5 global $nombre;
6 return "¿Qué tal " . $nombre . "?";
7 };
8
9 echo $saludar();
10?>
Programación orientada a objetos#
Los elementos de una clase se definen con ámbito public, private y protected. Adicionalmente se puede agregar el modificador static para poder acceder a los atributos y métodos sin crear un objeto.
Clases y objetos#
Estructura clase:
1<?php
2 class Videoconsola {
3 // atributos con ámbito obligatorio:
4 public $modelo = "Mega Drive";
5 public $marca = "Sega";
6
7 // métodos con ambito public por defecto:
8 function descripcion(){
9 echo "Es una " . $this->marca . " " . $this->modelo;
10 }
11 }
12
13 // crear objeto:
14 $megaDrive = new Videoconsola;
15
16 // recuperar atributo:
17 echo $megaDrive->marca . "<br>";
18
19 // recuperar métodos:
20 $megaDrive->descripcion();
21?>
Constructor:
1<?php
2 class Videoconsola {
3 public $modelo;
4 public $marca;
5
6 // constructor:
7 function __construct($modelo, $marca){
8 $this->modelo = $modelo;
9 $this->marca = $marca;
10
11 echo "Se ha creado el objeto";
12 echo "<br>";
13 }
14
15 function descripcion(){
16 echo "Es una " . $this->marca . " " . $this->modelo;
17 }
18 }
19
20 // crear objeto con parámetros:
21 $playStation = new Videoconsola("PlayStation", "Sony");
22
23 $playStation->descripcion();
24
25?>
Get y Set:
1<?php
2 class Videoconsola {
3 // métodos privados:
4 private $modelo;
5 private $marca;
6
7 function __construct($modelo, $marca){
8 $this->modelo = $modelo;
9 $this->marca = $marca;
10
11 echo "Se ha creado el objeto";
12 echo "<br>";
13 }
14
15 // get:
16 function getModelo(){
17 return $this->modelo;
18 }
19
20 function getMarca(){
21 return $this->marca;
22 }
23
24 // set:
25 public function setModelo($valor){
26 $this->modelo = $valor;
27 }
28
29 public function setMarca($valor){
30 $this->marca = $valor;
31 }
32
33 function descripcion(){
34 echo "Es una " . $this->marca . " " . $this->modelo;
35 }
36 }
37
38 $playStation = new Videoconsola("PlayStation", "Sony");
39
40 echo $playStation->getMarca() . "<br>";
41
42 $playStation->setModelo("PlayStation 5");
43 echo $playStation->getModelo();
44?>
Herencia:
1<?php
2 class Videoconsola {
3 public $modelo;
4 public $marca;
5
6 function __construct($modelo, $marca){
7 $this->modelo = $modelo;
8 $this->marca = $marca;
9
10 echo "Se ha creado el objeto";
11 echo "<br>";
12 }
13
14 function descripcion(){
15 echo "Es una " . $this->marca . " " . $this->modelo;
16 }
17 }
18
19 class SuperNintendo extends Videoconsola{
20 function __construct(){
21 $this->modelo = "SNES";
22 $this->marca = "Nintendo";
23 }
24 }
25
26 $superNintendo = new SuperNintendo;
27
28 $superNintendo->descripcion();
29?>
Clases abstractas y resolución de ámbito#
uso de clases no instanciables:
1<?php
2 abstract class Videoconsola {
3 public static $modelo = "Super Nintendo";
4 public $marca;
5
6 function __construct($modelo, $marca){
7 $this->modelo = $modelo;
8 $this->marca = $marca;
9
10 echo "Se ha creado el objeto";
11 echo "<br>";
12 }
13
14 public static function juegos(){
15 echo "La consola dispone de alrededor de 700 títulos";
16 }
17
18 // las funciones abstractas se deben usar obligatoriamente en la clase hija:
19 abstract function precio();
20 }
21
22 // clase a partir de clase abstracta:
23 class SuperNintendo extends Videoconsola{
24 function __construct(){
25 $this->modelo = "SNES";
26 $this->marca = "Nintendo";
27 }
28
29 function precio(){
30 echo "La consola cuesta 200 €";
31 }
32 }
33
34 // uso de clase hija:
35 $superNintendo = new SuperNintendo;
36 echo $superNintendo->modelo;
37 echo "<br>";
38 $superNintendo->precio();
39 echo "<br>";
40
41 // resolución de ámbito:
42 echo Videoconsola::$modelo;
43 echo "<br>";
44 Videoconsola::juegos();
45?>
Interfaces#
1<?php
2 interface Videoconsola{
3 function descripcion();
4 function precio();
5 }
6
7 class NeoGeo implements Videoconsola{
8 public $modelo;
9 public $marca;
10 public $precio;
11
12 function __construct($modelo, $marca, $precio){
13 $this->modelo = $modelo;
14 $this->marca = $marca;
15 $this->precio = $precio;
16 }
17
18 function descripcion(){
19 echo "Es la consola " . $this->modelo . " de " . $this->marca . "<br>";
20 }
21 function precio(){
22 echo "La consola cuesta: " . $this->precio . " €";
23 }
24 }
25
26 $neoGeo = new NeoGeo("Neo Geo Pocket", "SNK", 149.99);
27 $neoGeo->descripcion();
28 $neoGeo->precio();
29?>
Importar y exportar#
include y require#
Importar archivos php:
1<?php
2 // incluir archivo php:
3 include 'ruta/archivo.php';
4
5 // incluir obligatorio:
6 require("ruta/archivo.php");
7
8 // incluir y no repetir:
9 include_once 'ruta/archivo.php';
10
11 // incluir obligatorio y no repetir:
12 require_once("ruta/archivo.php");
13?>
Namespace#
Exportar (videojuegos.php):
1<?php 2 3 namespace Videoconsola{ 4 5 // las constantes solo se pueden definir con const: 6 const generacion = "5ª Generación"; 7 8 class Sistema { 9 public $modelo = "Mega Drive"; 10 public $marca = "Sega"; 11 12 function descripcion(){ 13 echo "Es una " . $this->marca . " " . $this->modelo; 14 } 15 } 16 17 function tipo(){ 18 echo "Es un sistema de tipo Videoconsola doméstica"; 19 } 20 } 21 22 namespace Arcade{ 23 24 // las constantes solo se pueden definir con const: 25 const cabina = "Bartop"; 26 27 class Sistema { 28 public $modelo = "Naomi"; 29 public $marca = "Sega"; 30 31 function descripcion(){ 32 echo "Es una placa" . $this->marca . " " . $this->modelo; 33 } 34 } 35 } 36?>
Importar namespace (index.php):
1<?php 2 include 'videojuegos.php'; 3 4 // cargar cada namespace: 5 use const Videoconsola\generacion; 6 use Videoconsola\Sistema as Videoconsola; 7 use function Videoconsola\tipo as tipo; 8 9 use Arcade\Sistema as Arcade; 10 11 echo generacion . "<br>"; 12 $megaDrive = new Videoconsola; 13 $megaDrive->descripcion(); 14 echo "<br>"; 15 tipo(); 16 echo "<br>"; 17 18 $naomi = new Arcade; 19 $naomi->descripcion(); 20?>
Nota
Los namespace se pueden declarar sin el uso de llave.