0% encontró este documento útil (0 votos)
60 vistas62 páginas

Curso de Bootstrap PHP Modulo1

Este documento presenta un curso de PHP dividido en 6 módulos. El Módulo 1 introduce PHP, incluyendo su sintaxis y componentes. El Módulo 2 cubre la instalación del software necesario como servidores web, PHP y MySQL. Los Módulos 3 y 4 explican conceptos de sintaxis y programación orientada a objetos en PHP. El Módulo 5 trata operaciones con MySQL. Finalmente, el Módulo 6 cubre inyecciones SQL y consultas preparadas para evitarlas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas62 páginas

Curso de Bootstrap PHP Modulo1

Este documento presenta un curso de PHP dividido en 6 módulos. El Módulo 1 introduce PHP, incluyendo su sintaxis y componentes. El Módulo 2 cubre la instalación del software necesario como servidores web, PHP y MySQL. Los Módulos 3 y 4 explican conceptos de sintaxis y programación orientada a objetos en PHP. El Módulo 5 trata operaciones con MySQL. Finalmente, el Módulo 6 cubre inyecciones SQL y consultas preparadas para evitarlas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 62

Curso de PHP

Orden
del  Concepto
concepto
Módulo 1
1 Introducción a PHP
1.1 Lenguaje Cliente y Lenguaje Servidor
1.2 Componentes de aplicaciones en PHP
2 Instalación del Software necesario
2.1 Instalación Servidor Web
2.2 Instalación extensiones de PHP
2.3 Instalación gestor Mysql
3 Sintaxis en PHP
3.1 Html y PHP-primera página en PHP
3.2 Variables y comentarios en PHP
3.3 Flujos de ejecución
3.4 Ámbito de las variables
3.5 Variables estáticas
3.6 Manejo de cadenas en PHP
3.7 Declaracion de constantes
3.8 Operadores de comparación
Operadores matemáticos, asignación,incremento,lógicos y de
3.9
cadena
3.10 Funciones matemáticas
3.11 Operadores Condicionales
3.12 Bucles
3.13 Funciones
4 Programación Orientada a Objetos (P.O.O)
Creación de clases, instancias, propiedades y métodos de
4.1
objetos
4.2 (P.O.O) Herencias
4.3 (P.O.O) Modificadores de acceso
4.4 (P.O.O) Variables y Métodos estáticos
4.5 (P.O.O) Arrays
5 Operaciones con MySql
5.1 BBDD MySql
5.2 Creando y eliminando tablas en MySql
5.3 Modificando tablas en MySql
5.4 Conectando la Web con la BBDD
5.5 Obteniendo registros de la BBDD
5.6 Importaciones de tablas-Búsqueda de filtros
5.7 Página de búsqueda
5.8 Insertando registros en BBDD
5.9 Eliminando registros en BBDD
5.10 Actualizando registros en BBDD
6 Inyecciones SQL
6.1 Inyección SQL
6.2 Consultas preparadas evitando inyección SQL
6.3 Consultas preparadas insertar registros en MySql

http://www.w3ii.com/es/php/php_syntax.html

http://www.w3schools.com/php/

http://aprende-web.net/php/php5_1.php
1.-Introduccion a Php

¿Qué es un archivo PHP?


 archivos PHP pueden contener texto, HTML, CSS, JavaScript, PHP y el código
 código PHP se ejecutan en el servidor, y el resultado se devuelve al explorador
como HTML plano
 archivos PHP tienen extensión ".php"

¿Qué se puede hacer con PHP?


 PHP puede generar páginas con contenidos dinámicos
 PHP puede crear, abrir, leer, escribir, borrar y cerrar archivos en el servidor
 PHP puede recopilar datos de formularios
 PHP puede enviar y recibir cookies
 PHP puede añadir, borrar, modificar los datos de su base de datos
 PHP puede ser usado para el control de acceso de los usuarios
 PHP puede cifrar los datos

Con PHP no está limitado a la salida HTML. Usted puede emitir imágenes, archivos
PDF y películas Flash. También puede exportar cualquier texto, como XHTML y
XML.

¿Por qué usar PHP?


 PHP se ejecuta en varias plataformas (Windows, Linux, Unix, Mac OS X, etc.)
 PHP es compatible con casi todos los servidores utilizados en la actualidad
(Apache, IIS, etc.)
 PHP es compatible con una amplia gama de bases de datos
 PHP es gratuito. Puedes descargarlo desde el recurso oficial de
PHP: www.php.net
 PHP es fácil de aprender y funciona de manera eficiente en el lado del
servidor
2.-Instalacion del Software
Antes de instalar php debemos hacer la diferencia entre los Programas que se
ejecutan del lado del cliente y del lado del servidor:

Servidor web local: se trata de convertir tu ordenador en un servidor web, de tal


manera que ahí puedas realizar todas las pruebas necesarias; sin necesidad de
subir a ningún hosting tu página web

Configurar PHP en su propio PC


 instalar un servidor web
 instalar PHP
 instalar una base de datos, tal como MySQL o MariaDB
Instalación del Xampp
Aquí veremos cómo arrancar Xampp, los editores Html y PHP, además de crear
nuestra primera página PHP conjuntamente con el frameWork de Bootstrap

1) Arrancar Xampp:
Debemos activar los botones de “Start”. Recordemos qu por defecto el puerto que
usa xampp es el 80.
De preferencia cambiaremos ese puerto por el “9090”, de la siguiente forma:
- Pulsamos el botón “Config” correspondiente a Apache.

Y seleccionamos (httpd.conf) y nos dirigimos al archivo de configuración :


Dentro de este archivo pulsamos CTRL + B para activar la ventana de
búsqueda y digitamos la palabra localhost hasta encontrar la coincidencia
indiacada en la imagen y modificamos el puerto por “9090”
Luego procedemos a buscar “Listen 80” y cambiamos por el puerto “Listen
9090”
Guardamos los cambios y para verificar el proceso abrimos cualquier navegador y
escribimos lo siguiente :
Localhost:9090
Esto deberá abrir la siguiente pagina:

Y para verificar el acceso a Mysql damos un clic aquí “phpMyAdmin”, lo cual


mostrara la siguiente pagina:

Recordemos que por defecto xampp no agrega clave para el acceso a mysql, pero
eso debe realizarse, instalar una clave.
2) Editores HTML/PHP: pueden ser SublimeText3 o Visual Studio Code

Cada uno de estos editores se le deberán agregar puglins para que funcionen a su
máxima capacidad
3) Ruta de instalación del proyecto para ejecutarse en el servidor local:
Si servidor local utilizado es el APPSERV la ruta es C:/AppServ/www dentro de
la carpeta “www” ahí guardamos la carpeta “Curso Php” y a su vez dentro de ella
todos los proyectos que vayamos a crear en PHP.
Si servidor local utilizado es el Xampp la ruta es C:/xampp/htdocs dentro de la
carpeta “htdocs” ahí guardamos la carpeta “Curso Php” y a su vez dentro de ella
todos los proyectos que vayamos a crear en PHP.

3.-Instalacion de Boostrap dentro de


un proyecto en php

Nos dirigimos a la pagina de bootstrap y descaragamos los archivos Css y Jss de la


versión requerida:

https://getbootstrap.com/

y marcamos el icono de descargas:

Y procedemos a elegir la versión a descargar:


una vez que elegimos la version
aparecera otra ventana , ahí marcamos
la seccion de descarga que se muestra
en el lado izquierdo de la pantalla:

De ahí procedemos a descargar el archivo correspondiente que tendra los Css y Jss requeridos:

Bootstrap y PHP-primera página


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-
scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <title>Document</title>
</head>
<body>
<?php

echo “ esta es la primera línea en Php”;
?>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/jquery-3.5.1.min.js"></script>
</body>
</html>
Variables y Comentarios en Php
 Las variables son "contenedores" para almacenar información.
 En PHP, una variable comienza con el signo $, seguido del nombre de la
variable:

Ejemplo:

<?php
$txt = "Bienvenidos al Mundo Php!";
$x = 5;
$y = 10.5;
?>

Una variable puede tener un nombre corto (como X o Y) o un nombre más


descriptivo (edad, carname, total_volume).

Reglas para las variables de PHP:

Una variable comienza con el signo $, seguido del nombre de la variable

Un nombre de variable debe comenzar con una letra o el carácter de subrayado

Un nombre de variable no puede comenzar con un número

Un nombre de variable sólo puede contener caracteres y guiones alfanuméricos


(AZ, 0-9 y _)

Los nombres de variables entre mayúsculas y minúsculas ($edad y $EdAd son dos
variables diferentes)

Sensibilidad a mayúsculas
En PHP, todas las palabras clave, clases, funciones y funciones definidas por el
usuario no hacen diferencia entre mayúsculas y minúsculas.

Ejemplo:

<?php
ECHO " Bienvenidos al Mundo Php!<br>";
echo " Bienvenidos al Mundo Php!<br>";
EcHo " Bienvenidos al Mundo Php!<br>";
?>
Sin embargo; al definir variables combinando mayúsculas y minúsculas estas
serán consideradas como variables distintas

Ejemplo:

<?php
$color = "Rojo";
echo "Mi Auto es rojo " . $color . "<br>";
echo "Mi casa es azul" . $COLOR . "<br>";
echo "Mi bote es blanco" . $coLOR . "<br>";
?>

Comentarios en Php

Un comentario en el código PHP es una línea que no se ejecuta como parte del
programa. Su único propósito es proporcionar algún tipo de información que se
esté buscando en el código.

Los comentarios pueden ser utilizados para:

 Dejar que los demás comprendan lo que está haciendo


 Recordarse a sí mismo de lo que se hizo

Ejemplo:

<?php
// esta es una linea simple de comentario
# esta tambien es una linea simple de comentario
/*estas son multiples lineas de comentarios 
En un bloque de lineas*/
$x = 5   /* + 15 */   + 5;
echo $x;
?>

Flujos de Ejecucion
Hace referencia al orden de ejecución de cada línea, usualmente el flujo es de
arriba abajo.
Pero existen instrucciones que rompen ese flujo de ejecución normal como son:
las condiciones, los bucles y las funciones.

Ejemplo

<?php
echo "Primera linea de ejecucion <br>";
Function ImprimirDatos()
{  echo  “Este es el mensaje del interior de la Funcion <br>”;
}
ImprimirDatos();
echo "Segunda  linea de ejecucion <br>";
?>

Funciones INCLUDE y REQUIRE en PHP


<?php
include("ruta_archivo.php");
include "ruta_archivo.php";
 
require("ruta_archivo.php");
require "ruta_archivo.php";
?>

Include inserta en nuestro script un código procedente de otro archivo, si no


existe dicho archivo o si contiene algún tipo de error nos mostrará un ‘warning‘
por pantalla y el script seguirá ejecutándose.
Require hace la misma operación que include, pero en caso de no existir el
archivo o error en el mismo mostrará un ‘fatal error‘ y el script no se sigue
ejecutando.
Estas funciones de preferencia se las ubica al inicio del archivo.
Se crea el archivo recibir_datos.php

<?php
Function Datos()
     {
    Echo “línea de ejecución de la función”;
     }
?>

Procedemos a crear el archivo pagina1.php, el cual contendrá la función Include


o Require

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-
scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <title>Nombre de la pagina$</title>
</head>
<body>
<?php
Include("recibir_datos.php");
    Echo "Primera línea de ejecución de la función <br>";
Datos();
Echo "Segunda linea de ejecucion <br>";
Echo "Tercera linea de ejecucion <br>";
Datos();
?>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/jquery-3.5.1.min.js"></script>
</body>
</html>

3.4-Ámbito de variables en PHP


Variables de ámbito local:

<?php
$Colegio= "Ciencia y Fe";
   Function CambiarNombre()
    {
        $Colegio= "Unidad Evangelica";
            Echo $Colegio;
    }
CambiarNombre();
Echo "<br>";
Echo $Colegio;
?>

Las variables locales son aquellas que pertenecen a un mismo ámbito y aunque
existan varios ámbitos con el mismo nombre de la variable, sus valores no se
superponen, ejemplo
La variable $nombre que está dentro de la función cambiarNombre() y dentro de
este ámbito tiene el valor de “Unidad Evangelica”, fuera de la función existe otro
ámbito donde la variable $nombre toma el valor de “Ciencia y Fe” al ejecutar el
programa tendremos:
A pesar de que son variables con el mismo nombre están definidas en ámbitos
distintos por lo tanto sus valores no se montan.

Variables de ámbito global:

<?php
$nombre= "Romulo";
   Function ImprimirNombre()
    {
Global $nombre;
$nombre= "su nombre es:" . $nombre;
    }
ImprimirNombre();
Echo "<br>";
Echo $nombre;
?>

Una variable global permite ser modificada en cualquier parte de PHP, siempre
suelen ser definidas dentro de una función. Nunca fuera de ella.

3.5-Variables estáticas:

<?php
   Function IncrementarNumero()
    {
$constante= 0;
$constante++;
Echo “<br>”.$constante;
    }
IncrementarNumero();
IncrementarNumero();
IncrementarNumero();
?>
El resultado al ejecutar este archivo seria:
La variable $constante siempre se encera, por lo tanto
si queremos que permanezca con su ultimo valor
debemos agregar la palabra “static” dentro de la
función incrementarNumero ().

Se realizo un cambio en la codificación:

<?php
   Function IncrementarNumero()
    {
Static $constante= 0;
$constante++;
Echo "<br>".$constante;
    }
IncrementarNumero();
IncrementarNumero();
IncrementarNumero();
?>

Su ejecución es:

En el momento de ejecutar la primera llamada de la


función mediante la palabra “static” se congela ese último
valor de la variable $constante y lo incrementara, en la
segunda llamada tomara en cuenta el último valor asignado
y lo incrementara y así sucesivamente hasta finalizar los
llamados de la variable incrementarNumero().

3.6-Manejo de cadenas en PHP

Diferencia entre comillas dobles ( “ ) y simples ( ' )

(A) (B)
<?php <?php
$txt1 = "Hola"; $txt1 = "Hola";
$txt2 = "como estas"; $txt2 = "como estas";
$y = 4; $y = 4;

echo "<h2>$txt1</h2>"; echo '<h2>$txt1</h2>';


echo "………$txt2<br>"; echo '………$txt2<br> ';
echo $y; echo $y;
?> ?>

(a) se imprimirá el valor de la variable


(b) se imprimirá ………$txt2, es decir no reconoce la variable
Con las comillas simples decimos a PHP que escriba literalmente lo que se
encuentre entre comillas ignorando el valor de cualquier variable
Con las comillas dobles decimos a PHP que escriba lo que se encuentre entre
comillas considerando el valor de cualquier variable

Obtener la longitud de una cadena

La función de PHP strlen () devuelve la longitud de una cadena.

El ejemplo siguiente devuelve la longitud de la cadena "Hola mundo!":

<?php
echo strlen("HOLA MUNDO!"); // Salida 11
?>

Contar el número de palabras en una cadena

str_word_count () cuenta el número de palabras en una cadena:

<?php
echo str_word_count("HOLA MUNDO!"); // Salida 2
?>

Invertir una cadena

strrev () invierte una cadena:

<?php
echo strrev("Hola mundo!!!"); // salida !!!odnum aloH
?>

Para buscar un texto específico dentro de una cadena

strpos() busca un texto específico dentro de una cadena.

Si se encuentra una coincidencia, la función devuelve la posición del primer partido. Si


no se encuentra ninguna coincidencia, se devolverá FALSE.
El siguiente ejemplo busca el "mundo" de texto en la cadena "Hola mundo!":

<?php
echo strpos("Hola mundo!", "mundo"); // salida 5
?>

Reemplazar texto dentro de una cadena

str_replace () sustituye a algunos personajes con algunos otros caracteres de una


cadena.

El siguiente ejemplo reemplaza el texto "mundo" con "Dolly":

<?php
$cadena=”Hola Mundo!!”;
echo str_replace("Mundo", "Camilla",$cadena); // Hola Camilla!!
?>

Comparación de cadenas

strcmp() compara dos cadenas de caracteres, devuelve un 1 si son distintos y 0 si


son iguales. Considera tanto mayúsculas como minúsculas.

strcasecmp() compara dos cadenas de caracteres, devuelve un 0 si son iguales y si


no son iguales devuelve un valor diferente de 0. Ignora por completo mayúsculas
como minúsculas.

<?php
$var1="Casa";
$var2="CASA";
$resultado=strcmp($var1,$var2); // salida 1 si son distintos!
$resultado=strcasecmp($var1,$var2); // salida 0, son iguales!
?>

3.7-Declaracion de constantes

Un
nombre válido comienza con una letra o un guión bajo (sin signo $ antes del nombre
Valor, puede ser cualquier tipo numérico o cadena, si es cadena debe ir entre comillas

Crear una constante de PHP


Para crear una constante, utilizar la función de definir ().

Sintaxis

define(Nombre, valor,Valor_boolean)

parámetros:

 Nombre : especifica el nombre de la constante


 valor : Especifica el valor de la constante
 Valor_boolean: (true/false) especifica si el nombre de la constante debería ser
sensible a las mayúsculas. Predeterminado es falso

Ejemplo

Aquí estamos utilizando Boostrap y Php

<?php
define("SALUDOS","Bienvenidos a Bootstrap y Php");
define("MENSAJE","Lo mejor en diseño y desarrollo Web",true);
define("ASIGNATURA","Programacion ");
define("ASIGNATURA","y Base de Datos ",true);
?> 
<tr>
            <td>SALUDOS</td>
            <td><?php echo SALUDOS; ?></td>
         </tr>
        <tr>
            <td>MENSAJE</td>
            <td><?php echo mensaje; ?></td>
        </tr>
        <tr>
            <td>ASIGNATURA</td>
            <td><?php echo ASIGNATURA; ?></td>
        </tr>
        <tr>
            <td>ASIGNATURA</td>
            <td><?php echo asignatura; ?></td>
        </tr>

Resultados:

Ejemplo

<?php
define("AUTOR", "ROMULO", true);
AUTOR="BONE";
echo "El autor es : " .autor; 
/*Dara un error pues estoy tratando de modificar una constante, a
demás esa no es la forma de modificarla*/
?>
3.8-Operadores de comparación de PHP
Los operadores de comparación PHP se utilizan para comparar dos valores (número o
cadena):

Operador Nombre Ejemplo Resultado


== igual $x == $y Retorna true si $x es igual a $y
=== Idéntico $x === Retorna true si $x es igual $y, y ellos
$y son del mismo tipo
!= No igual $x != $y Retorna true si $x no es igual a $y
<> No igual $x <> $y Retorna true si $x no es igual a $y
!== No $x !== $y Retorna true si $x no es igual a $y, o
identico ellos no son del mismo tipo
> Mayor que $x > $y Retorna true si $x es mayor que $y
< Menor $x < $y Retorna true si $x es menor que $y
que
>= Mayor que $x >= $y Retorna true si $x es mayor que o
o igual igual $y
<= Menor $x <= $y Retorna true si $x es menor que o
que o igual igual $y

3.9-Operadores Matematicos PHP


Los operadores PHP aritméticas se utilizan con los valores numéricos para realizar
operaciones aritméticas comunes, tales como suma, resta, multiplicación, etc.

Operador Nombre Ejemplo Resultado


+ Adicion $x + $y Suma $x y $y
- Subtracion $x - $y resta de $x el valor $y
* Multiplicacion $x * $y Producto de $x y $y
/ Division $x / $y cociente de $x y $y
% residuo $x % $y Residuo de $x dividido por $y
** Exponente $x ** $y Resulta de elevar $x , $y veces (Introducido
en PHP 5.6)

3.9.1-Operadores de Asignación de PHP


Los operadores de asignación PHP se utilizan con valores numéricos para escribir un
valor a una variable.

El operador básico de asignación en PHP es "=". Esto significa que el operando de la


izquierda toma el valor de la expresión de asignación a la derecha.
Asignación Igual a ... Descripción
x=y x=y Asigna y a x
x += y x=x+y Adición
x -= y x=x-y Sustracción
x *= y x=x*y Multiplicación
x /= y x=x/y División
x %= y x=x%y Residuo

3.9.2-Operadores de incremento/decremento PHP


Los operadores de incremento PHP se utilizan para incrementar el valor de una
variable. Los operadores de PHP decremento se utilizan para disminuir el valor de una
variable.

Operador Nombre Descripcion


++$x Pre-incremento Incrementa $x en 1, entonces retorna
$x
$x++ Post-incremento Retorna $x, entonces incrementa $x
en 1
--$x Pre-decremento Decrece $x en 1, entonces retorna $x
$x-- Post-decremento Retorna $x, entonces decrementa $x
en 1

3.9.3-Operadores lógicos en PHP


Los operadores lógicos de PHP se utilizan para combinar las sentencias condicionales.

Operador Nombre Example Result


And And $x and $y True si ambas $x y $y son true
Or Or $x or $y True si $x o $y es true
Xor Xor $x xor $y True si $x o $y es true, pero no ambas
&& And $x && $y True si ambas $x y $y son true
|| Or $x || $y True si $x o $y es true
! Not !$x True si $x no es true
3.9.4-Operadores de cadena PHP
PHP tiene dos operadores que están especialmente diseñados para las cuerdas.

Operador Nombre Ejemplo Resultado


. Concatena $txt1 . $txt2 Concatena $txt1 y
$txt2
.= Concatena y $txt1 .= $txt2 agrega $txt2 a
asigna $txt1

3.10-Funciones Matematicas

Potenciación: Eleva el número indicado en base (base de la potencia), al


número indicado en exp(exponente).

pow(base,exp);

Raíz cuadrada: calcula la raiz cuadrada del número pasado como argumento.

sqrt(num);

Logaritmo: Devuelve el resultado del logaritmo para el primer argumento. El


segúndo argumento es opcional, e indica la base del logaritmo. Si no se expecifica
el logaritmo sera en base e (logaritmo natural).

log(num,base);

Conversión a binario: Convierte el número pasado en el argumento en


número binario (en base 2).

decbin(num);

Conversión a decimal: Función contraria a la anterior. Le pasamos un


número binario en el argumento y lo convierte a decimal.

bindec(num);

Conversión a octal: Convierte el número pasado en el argumento en número


octal (en base 8).

decoct(num);

Conversión a hexadecimal: Convierte el número pasado en el argumento en


número hexadecimal (en base 16).

dechex(num);
Conversión de una base a otra: Convierte el número pasado en el
argumento, el cual se toma escrito en la base base1, a la base especificada
en base2. Tanto base1 como base2 deben ser números comprendidos entre el 2 y
el 36, ambos inclusive. Para los caracteres de los números en bases mayores que
10, se usarán las letras minúsculas del alfabeto, de forma que a=10, b=11, etc.
base_convert(num,base1,base2);

Valor absoluto: devuelve el valor absoluto del número pasado como


argumento, es decir, siempre positivo, sin tener en cuenta el signo.

abs(num);

Redondeo: Redondea el número pasado en el primer argumento al entero más


cercano cuando no especificamos el segundo argumento. El segundo argumento
es opcional, e indica el número de decimales que queremos que tenga el número
redondeado. Si este número es negativo se redondeará a entero convirtiendo las
últimas cifras en ceros.
round(num,precision);

Redondeo al alza: Redondea el número pasado en el argumento al siguiente


entero inmediatamente superior.

ceil(num);

Redondeo a la baja: Redondea el número pasado en el argumento al


número entero inmediatamente inferior.

floor(num);

Formato de números: Define cómo se debe presentar el número en pantalla,


podemos poner 1, 2, o 4 parámetros, (pero no 3), si ponemos sólo el primero el
número se mostrará tal cual es; si ponemos el primero y el segundo se mostrará
con el número de decimales indicado en el segundo. Si ponemos los 4 el tercero
indica cual es el signo que se debe emplear para separar los decimales (coma,
punto u otro), y el cuarto el signo para separar los miles (signo que separa la
parte entera en grupos de 3: punto, espacio blanco, coma, etc.).

number_format(num,decimales,"separacion_decimal","separacion_miles")

Número aleatorio: Genera un número entero aleatorio comprendido entre


los números pasados en el primer argumento min (mínimo) y el
segundo max (máximo). Si no se le pasa el ningún argumento los límites del
número aleatorio serán entre 0 y RAND_MAX, que en Windows es 32768.

rand(min,max)
Número aleatorio: Como la anterior genera también un número entero
aleatorio, los argumentos actúan igual que la anterior, delimitando el mínimo y el
máximo, y si no se pasa ningún argumento los límites son también entre 0 y
RAND_MAX. Esta función tiene la ventaja de que genera los números 4 veces más
rápido que la función rand().

mt_rand(min,max);

Operadores condicionales 
Las sentencias condicionales se utilizan para llevar a cabo diferentes acciones
basadas en diferentes condiciones.

En PHP tenemos las siguientes instrucciones condicionales:

if - Ejecuta código si una condición es verdadera

if ... else - Ejecuta código si una condición es verdadera y otro código si esa
condición es falsa

if ... elseif .... else - ejecuta códigos diferentes por más de dos condiciones

sentencia switch - selecciona uno de los muchos bloques de código para ser
ejecutado

La sentencia if
La sentencia if se ejecuta algún código si una condición es verdadera.

Sintaxis

if (condicion) {
codigo a ser ejecutado si la condicion es verdadera;
}

El siguiente ejemplo es la salida "Que tenga un buen día!" Si la hora actual (HORA)
es menor que 18:

Ejemplo

<?php
$t = date("H");
if ($t < "18") {                                |
    echo "que tenga un buen dia!!!!";
}
?>
La sentencia if else ...

La sentencia else if .... Ejecuta código si una condición es verdadera y otro código
si esa condición es falsa.

Sintaxis

if (condicion) {
    codigo a ser ejecutado si la condicion es verdadera;
} else {
   codigo a ser ejecutado si la condicion es falsa;
}

El siguiente ejemplo es la salida "Que tenga un buen día!" si la hora actual es


inferior a 18, y "Buenas noches!" caso contrario:

Ejemplo

<?php
    $t = date("H"); 
    if ($t < "18") {
        echo "Que tenga un buen dia!";
    } else {
        echo "Buenas noches!";
    }
?>

La sentencia switch
La sentencia switch se utiliza para llevar a cabo diferentes acciones basadas en
diferentes condiciones.

Utilice la sentencia switch para seleccionar uno de los muchos bloques de


código para ser ejecutado .

Sintaxis

switch (n) {
    case Etiqueta1:
          codigo a ser ejecutado si n=Etiqueta1;
        break;
    case Etiqueta2:
        codigo a ser ejecutado si n=Etiqueta2;
        break;
    case Etiqueta3:
        codigo a ser ejecutado si n=Etiqueta3;
        break;
    ...
    default:
          codigo a ser ejecutado si n es diferente a todas las
etiquetas;
}
Ejemplo

<?php
switch ($favcolor) {
    case "rojo":
        echo "tu color favorito es rojo!";
        break;
    case "azul":
        echo " tu color favorito es azul!";
        break;
    case "verde":
        echo " tu color favorito es verde!";
        break;
    default:
        echo " tu color favorito no es ni  rojo, blue, ni verde!"
;
}
?>

Bucles
Los bucles ejecutan un bloque de código mientras que la condición especificada
sea verdadera.

En PHP, tenemos las siguientes declaraciones de bucle:

 while do - los bucles a través de un bloque de código, siempre y cuando la


condición especificada es verdadera
 do ... while - bucles a través de un bloque de código una vez, y luego
repite el bucle mientras la condición especificada es verdadera
 for - bucles a través de un bloque de código un número determinado de
veces
 foreach - bucle a través de un bloque de código para cada elemento de una
matriz
El bucle While
El bucle while ejecuta un bloque de código, siempre y cuando la condición especificada
es verdadera.

Sintaxis

while (condicion es verdadera) {


     Codigo a ejecutarse;
}

El ejemplo siguiente primero establece una variable $ x 1 ($ x = 1). A continuación, el


bucle while seguirá funcionando siempre y cuando $ x es menor o igual a 5 ($ x <=
5). $ X se incrementará en 1 cada vez que se ejecute el bucle ($ x ++):

Ejemplo

<?php
$x = 1; 
while($x <= 5) {
    echo "El numero es: $x <br>";
    $x++;

?>

El bucle Do ... While


El bucle do ... while siempre se ejecutará el bloque de código una vez, se compruebe
el estado, y repetir el bucle mientras la condición especificada es verdadera.

Sintaxis

do {
    Codigo a ejecutarse;
} while (condicion es verdadera);

El ejemplo siguiente primero establece una variable $ x 1 ($ x = 1). A continuación, el


bucle Do While escribirá alguna salida, y luego incrementar la variable $ x con 1. A
continuación, se comprueba la condición (es $ x menor que, o igual a 5?), Y el bucle
continuará funcionando siempre y cuando $ x es menor que, o igual a 5:

Ejemplo
<?php
$x = 1; 
do {
    echo "El numero es: $x <br>";
    $x++;
} while ($x <= 5);
?>

El ciclo For
El bucle se utiliza cuando se sabe de antemano cuántas veces la secuencia de
comandos debe ejecutarse.

Sintaxis

for (Inicio_Cont;Condicion_Cont;Variacion_Cont ) {
    Codigo a ejecutarse;
}

parámetros:

 Inicio_Cont: Inicializa el valor de contador de bucle


 Condicion_Cont : evalúa cada iteración del bucle. Si la condición es TRUE, el
bucle continúa. Si la condición es FALSE, el bucle termina.
 Variacion_Cont: Aumenta o disminuye el valor del contador del bucle

El ejemplo a continuación muestra los números del 0 al 10:

Ejemplo

<?php
for ($x = 0; $x <= 10; $x++) {
    echo "El numero es : $x <br>";

?>

El bucle Foreach
El bucle foreach funciona solamente con matrices, y se utiliza para recorrer cada par
clave / valor en una matriz.

Sintaxis
foreach ($Array  as $Valor) {
    Codigo a ejecutarse;
}

Para cada iteración del bucle, el valor del elemento de matriz actual $Array se le
asigna a la variable $Valor y el puntero se mueve a la siguiente hasta que alcanza el
último elemento de la matriz.

El siguiente ejemplo muestra un bucle que dará salida a los valores de la matriz dada
($) colores:

Ejemplo

<?php
$colores = array("rojo", "verde", "azul", "amarillo"); 
foreach ($colores as $valor) {
    echo "$valor <br>";
}
?>

<?php
$pot=0;
if (isset($_POST['enviar']))
    {           
    $numero=$_POST['dato1'];
    $pot=strlen($numero);$acum=0;           
    for ($x=0;$x<$pot;$x++)
        $acum=$acum+pow($numero[$x],$pot);                        
  
if ($acum==$numero)
    echo "<div class='alert alert-dark' role='alert'> El numero e
s Armstrong</div>";
    else
    echo "<div class='alert alert-dark' role='alert'> El numero N
O es Armstrong</div>";
    }
?>

Funciones
El verdadero poder de PHP viene de sus funciones; que cuenta con más de 1000
funciones incorporadas.
Funciones definidas por el usuario
Además de las funciones de PHP incorporadas, podemos crear nuestras propias
funciones.

Una función es un bloque de instrucciones que se pueden utilizar en varias ocasiones


en un programa.

Una función no se ejecutará inmediatamente cuando se carga una página.

Una función se ejecutará mediante una llamada a la función.

Una declaración de la función definida por el usuario comienza con la palabra


"function":

Sintaxis

function NombreFuncion() {
    codigo a ser ejecutado;
}

Nota: Un nombre de función puede comenzar con una letra o un guión bajo (no debe
iniciar con un número).

Consejo: Dar un nombre a la función que refleje lo que hace la función!

En el siguiente ejemplo, creamos una función llamada "EscribirSms()". La llave ({)


indica el comienzo del código de función y de la llave de cierre (}) indica el final de la
función. 

Ejemplo

<?php
function EscribirSms() {
    echo "Hola MUndo!!!";
}
EscribirSms(); // llama a al funcion
?>

Argumentos de una función


Los argumentos se especifican después de que el nombre de la función, dentro de los
paréntesis. Puede añadir tantos argumentos como desee, sólo les separan con una
coma.
Ejemplo

<?php
function NombreFamilia($NFamilia) {
    echo "$NFamilia Zambrano.<br>";
}
NombreFamilia("Erick");
NombreFamilia("Jim");
NombreFamilia("Kim");
?>

El siguiente ejemplo tiene una función con dos argumentos ($nombre y $edad):

Ejemplo

<?php
function NombreFamilia($nombre, $edad) {
    echo "$nombre Bone. edad $edad años <br>";
}
NombreFamilia("Julia", "34");
NombreFamilia("Maria", "23");
NombreFamilia("Paulina", "25");
?>

Argumento por defecto


El siguiente ejemplo muestra cómo utilizar un parámetro por defecto. Si llamamos a
la función Altura() sin argumentos que toma el valor por defecto como argumento:

Ejemplo

<?php
function Altura($AlturaMin = 50) {
    echo "La altura es  : $AlturaMin <br>";
}
Altura(350);
Altura(); // usara el valor por defecto de  50
Altura(135);
Altura(80);
?>
Devolución de valores en una funcion
Para permitir que una función devuelve un valor, utilice la instrucción de retorno: 

Ejemplo

<?php
ffunction sum($x, $y) {
    $z = $x + $y;
    return $z;
}
echo "5 + 10 = ".sum(5, 10)."<br>";
echo "7 + 13 = ".sum(7, 13)."<br>";
echo "2 + 4 = ".sum(2, 4);

?>

Parametros por valor y parámetros por


referencia en una funcion

Paso de argumentos por referencia 


Por defecto, los argumentos de las funciones son pasados por valor (así, si el valor del
argumento dentro de la función cambia, este no cambia fuera de la función). Para
permitir a una función modificar sus argumentos, éstos deben pasarse por referencia.
Para hacer que un argumento a una función sea siempre pasado por referencia hay
que anteponer al nombre del argumento el signo (&) en la definición de la función:

Ejemplo parámetro por valor

<?php
function Incrementar($valor)
{   $valor++;                            
      return $valor;                            
}                                   
Echo Incrementar(5);   
?>

<?php
function Incrementar($valor)    {   
    $valor++;
     return  $valor;                                    
    }
    $numero=5;
    Echo Incrementar($numero).”<br>”;
    Echo $numero;
?>

La variable $numero no sufre ningún cambio

Ejemplo parámetro por referencia

<?php
Function Incrementar(&$valor)
    {   $valor++;
        return  $valor;
    }
$numero=5;
Echo Incrementar($numero).”<br>”;
Echo $numero;
?>

La variable $numero sufre cambios

Ejemplo parámetro por valor

<?php
    function cambia_mayus($param)
    {   $param=strtolower($param);
        $param=ucwords($param);                         
        return $param;                          
    }   
$cadena=”hOlA mUnDo!!”;                             
Echo cambia_mayus($cadena).”<br>”;// imprime   Hola Mundo!!
Echo $cadena;               // imprime hOlA mUnDo!!;              
          
?>
La variable $cadena no se ve afectada por los cambios hechos en la función

Ejemplo parámetro por referencia

<?php
    function cambia_mayus(&$param)
    {   $param=strtolower($param);
          $param=ucwords($param);                           
          return $param;                            
    }   
    $cadena="hOlA mUnDo!!";                             
    Echo cambia_mayus($cadena)."<br>";// imprime   Hola Mundo!!
    Echo $cadena;               // imprime Hola Mundo!!           
                                  
?>

La variable $cadena se ve afectada por los cambios hechos en la función

<?php
    function agregar_algo(&$cadena)
    {
        $cadena .= 'y algo más.';
    }
    $cad = 'Esto es una cadena, ';
    agregar_algo($cad);
    echo $cad;    // imprime 'Esto es una cadena, y algo más.'
                                            
?>
Programación Orientada a Objetos
(P.O.O)

Existen tres términos muy utilizados en la programación orientado a objetos, estos


son: Objeto,Clase e instancia.

Creacion de clases (Objeto):


La definición básica de una clase comienza con la palabra reservada class, seguida de
un nombre de clase, y continuando con un par de llaves que encierran las definiciones
de las propiedades y métodos pertenecientes a dicha clase.

El nombre de clase puede ser cualquier etiqueta válida, siempre que no sea
una palabra reservada de PHP. Un nombre válido de clase comienza con una letra o
un guión bajo, seguido de una cantidad arbitraria de letras, números o guiones bajos.

Un objeto posee propiedades o atributos y posee un comportamiento.

Poniendo el ejemplo de un Objeto llamado Auto:

Atributos: Color, Peso, Alto y Largo.

Comportamiento (¿Que es capaz de hacer?): Arrancar, Frenar, Girar y Acelerar

Inicialización de objetos 

Para crear un nuevo objeto , utilice la sentencia new para instanciar una clase:


Creacion de una instancia de clase:
Una clase es un modelo donde se redactan las características de un grupo de objetos.

Crearemos una clase llamada “Auto” de preferencia la primera letra del nombre de la
clase empieza con mayuscula

<?php
class Auto
{
    }
new Auto(); // aquí se crea la instancia
?>

Ahora crearemos varias instancias, haciendo referencia a la clase Auto podemos tener
las marcas de autos Renault, mazda y un fiat:

<?php
class Auto
{
    }
$renault=new Auto(); // hemos creado tres instancias
$mazda= new Auto();
$fiat= new Auto();
?>

Propiedades y métodos de objetos


Cambio de propiedades
Llamadas a métodos

<?php
class Auto
{ var $ruedas; // asignación de propiedades a la clase Auto
Var $Color;
Var $motor;
Function arrancar(){ // asignación de métodos al objeto o clase
}
Function girar() {
}
Function frenar(){
}
}
$renault=new Auto(); // hemos creado tres instancias
$mazda= new Auto();
$fiat= new Auto();
?>
Creacion de constructores:

El constructor de una clase va a indicar el estado inicial de una clase y debe tener el
mismo nombre de la clase:
<?php
class Auto
{ var $ruedas; // asignación de propiedades a la clase Auto
Var $Color;
Var $motor;
Function Auto() { // método constructor
$this->ruedas=4; //inicializamos la variable $ruedas
$this->Color=””;
$this->motor=1600;
}

Function arrancar(){ // asignación de métodos al objeto o clase


Echo “Estoy arrancando<br>”;
}
Function girar() {
Echo “Estoy girando<br>”;
}
Function frenar(){
Echo “Estoy frenando<br>”;
}
}
$renault=new Auto(); // hemos creado tres instancias
$mazda= new Auto();
$fiat= new Auto();
$mazda->girar() // estoy accediendo a la función girar de la instancia o
// ejemplar $mazda
Echo $mazda->ruedas // estoy accediendo a la propiedad de la clase Auto
?>

Llamada a objetos con parámetros

Se crea la función “establece_color” dentro de la clase “Auto”:

Function establece_color($color_auto)
{ $this->color=$color_auto;
Echo “El color del auto es:”. $this->color.”<br>”;
}
.
.

.}

$renault->establece_color(rojo); //aquí establecemos el llamado de un método


//con parámetros de entrada

Se desea agregar otro parámetro de tal manera que m muestre el nombre del auto:

Function establece_color($color_auto,$nombre_auto)
{ $this->color=$color_auto;
Echo “El color del auto”.$nombre_auto.” es:”. $this->color.”<br>”;

$renault->establece_color(“Rojo”,”Renault”);
$mazda->establece_color(“Azul”,”Mazda”);

Reutilizacion de codigo
El achivo “POO1.php” que contiene toda la codificación en php será eliminada, y dicha
codificación será almacenada en otro archivo php llamado “Vehiculos.php”
POO1.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>
<body>

</body>
</html>
Asi quedara el archivo “POO1.php” después de eliminar la codificación php.
Se creara un nuevo archivo “Vehiculos.php”.

Vehículos.php

<?php
class Auto
{
var $ruedas;
var $color;
var $motor;
function Auto()
{
$this->ruedas=4;
$this->color="";
$this->motor=1600;
}
function arrancar()
{
echo "Estoy arrancando<br>";
}
function girar()
{
echo "Estoy girando<br>";
}
function frenar()
{
echo "Estoy frenando<br>";
}
function establece_color($color_auto,$nombre_auto)
{
$this->color=$color_auto;
echo "El color del auto ".$nombre_auto." es ".$this->color."<br>";
}
}
//----------------------------------------------------------------------------------
class Camion
{
var $ruedas;
var $color;
var $motor;
function Camion()
{
$this->ruedas=8;
$this->color="Gris";
$this->motor=2600;
}
function arrancar()
{
echo "Estoy arrancando<br>";
}
function girar()
{
echo "Estoy girando<br>";
}
function frenar()
{
echo "Estoy frenando<br>";
}

}
?>
De esta manera hemos creado dos clases muy similares reutilizando el código inicial ,
apenas las únicas difernecias son los atributos de la clase como son $ruedas y $motor
los que cambian el valor inicial en el constructor.
Luego procederemos a agregar la codificación en el archivo “POO1.php”:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>
<?php
include("vehiculos.php");
$mazda= new Auto();
$nissan= new Camion();

echo "El numero de ruedas del auto es ". $mazda->ruedas. "<br>";


echo "El numero de ruedas del nissan es ". $nissan->ruedas. "<br>";

?>

</body>
</html>

Herencias
Herencia en POO . Superclases y subclases
Reutilización de código

La herencia en programación orientada a objetos hace referencia a las variables,


métodos o funciones que pueda utilizar una clase2 de la clase1, incluyendo sus
propias variables y funciones.

Siguiendo la misma secuencia la clase3 podra utilizar las mismas variables, métodos o
funciones tanto de la clase2 como de la clase1, e incluyendo sus propias variables y
métodos. Y asi se establece una cascada en cadena para el uso de variables y
métodos

Las superclases se dan de la siguiente manera:

Clase2 seria subclase de clase1, por lo tanto clase1 es una superclase.

Clase3 seria una subclase de clase2, por lo tanto clase2 seria una superclase
refiriéndonos a clase3.

Siguiendo esta lógica clase1 seria una superclase para clase2 y para clase3.

Y asi podríamos seguir establecediendo un numero indeterminado de superclases y


subclases.
Para poder realizar una herencia de una clase a otra solo se agrega la
instrucción “extends”, tal y como se muestra en la imagen.

Vamos a restructurar el archivo “herencias.php”:


<?php
class Auto
{
var $ruedas;
var $color;
var $motor;
function Auto()
{
$this->ruedas=4;
$this->color="";
$this->motor=1600;
}
function arrancar()
{
echo "Estoy arrancando<br>";
}
function girar()
{
echo "Estoy girando<br>";
}
function frenar()
{
echo "Estoy frenando<br>";
}
function establece_color($color_auto,$nombre_auto)
{
$this->color=$color_auto;
echo "El color del auto ".$nombre_auto." es ".$this->color."<br>";
}
}
//----------------------------------------------------------------------------------
class Camion extends Auto // aquí estoy heredando las funciones y variables de la clase Auto
{

function Camion()
{
$this->ruedas=8;
$this->color="Gris";
$this->motor=2600;
}
// Aquí estoy restructurando o sobreescribiendo la función “establece_color”
function establece_color($color_Camion,$nombre_Camion)
{
$this->color=$color_Camion;
echo "El color del Camion ".$nombre_Camion." es ".$this->color."<br>";
}

}
?>
Nota: recordemos que la clase camión no poseía la función “establece_color” por lo
tanto si la queremos agregar y que posea las mismas características, debemos
escribirla con el mismo nombre que tenia en la clase “Auto”, tal y como se muestra en
la codificación. Solo cambiarian las variables que hagan referencia que es un camión.

Haremos un ligero cambio en el archivo “POO1.php”


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>
<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();

echo "El numero de ruedas del auto es ". $mazda->ruedas. "<br>";


echo "El numero de ruedas del nissan es ". $nissan->ruedas. "<br>";
?>
</body>
</html>

Si deseamos crear una función que herede los mismos procesos de otra función de una
clase en particular debemos utilizar la instrucción:

parent::NOMBRE_SUPERCLASE;
Tenemos el mismo archivo “Herencia.php” haremos los siguientes cambios en la subclase
“Camion” de tal manera que crearemos una función “arrancar” con nuevos procesos que
además incluyan los procesos de la función “arrancar” de la SuperClase “Auto”.
Vamos a restructurar el archivo “herencias.php”:

<?php
class Auto
{
……….
}
//----------------------------------------------------------------------------------
class Camion extends Auto // aquí estoy heredando las funciones y variables de la clase Auto
{

function Camion()
{
$this->ruedas=8;
$this->color="Gris";
$this->motor=2600;
}
// Aquí estoy restructurando o sobreescribiendo la función “establece_color”
function establece_color($color_Camion,$nombre_Camion)
{
$this->color=$color_Camion;
echo "El color del Camion ".$nombre_Camion." es ".$this->color."<br>";
}
function arrancar()
{
Parent::arrancar();// aqui agregamos todos los procesos de la function “arrancar”
// de la SuperClase Auto
Echo “El camion ya arranco”; //Nuevo proceso de la función “arrancar”
// de la SubClase Camion

}
}
?>

Haremos un ligero cambio en el archivo “POO1.php”


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>
<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();

echo "El numero de ruedas del auto es ". $mazda->ruedas. "<br>";


echo "El numero de ruedas del nissan es ". $nissan->ruedas. "<br>";
$mazda->arrancar();
$nissan->arrancar();
?>

</body>
</html>
De esta manera hemos creado dos funciones con el mismo nombre pero cada una
hace procesos distintos, e incluso una de ellas hereda procesos de la otra.

Modularizacion , Encapsulacion y
Modificadores de Acceso

Modularizacion
Consiste en segmentar un archivo principal en pequeños archivos o modulos de tal
manera que cada uno de ellos contenga todas las clases necesarias para llevar a cabo
proceso principal, osea consiste en dividir el código en partes.

Encapsulacion
Consiste en que cada parte que ha sido modularizada , debe tener procesos
totalmente independientes uno del otro, pero eso no implica que ciertos modulos
tengan acceso a otros. Es decir ciertas clases serán encapsuladas y otras no.
Modificadores de acceso
Para poder encapsular ciertos objetos y tener accesos ellos, uno si y otros no, se debe
utilizar los modificadores de acceso.

Los mas comunes son:

Public: Cuando una variable, método o función se la declara public esta se hace
accesible desde cualquier lugar.

Private: Cuando una variable, método o función se la declara private esta se hace
accesible desde la propia clase . Aquí generamos una encapsulación.
Protected: Cuando una variable, método o función se la declara protected esta se
hace accesible desde la propia clase y clases heredadas.

Haciendo referencia al archivo anterior: La encapsulación la aplicaremos para la


variable “ruedas”. Tal y como esta la clase “Auto” cualquier persona puede cambiar el
numero de ruedas y darle por ejemplo un valor de “7” osea siete ruedas, situacion
que no tiene sentido. Lo que se desea es evitar que cualquier persona modifique el
valor inicial.

Haremos un ligero cambio en el archivo “POO1.php”


<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
$mazda->ruedas=7; // aqui estoy modificando el valor de ruedas
// situacion que no debe darse
echo "El numero de ruedas del auto es ". $mazda->ruedas. "<br>";
echo "El numero de ruedas del nissan es ". $nissan->ruedas. "<br>";

?>

Para evitar que una persona desde el archivo anterior modifique nuestros valores
iniciales debemos ir a la clase “Auto” y cambiar la variable “ruedas” de “VAR” a
“PRIVATE”.

Vamos a restructurar el archivo “herencias.php”:


<?php
class Auto
{
private $ruedas; // la variable “ruedas solo podrá ser utilizada dentro de la clase “Auto”
var $color;
var $motor;
function Auto()
{
$this->ruedas=4;
$this->color="";
$this->motor=1600;
}
…………..

}
Aplicando la encapsulacion con el modificador “private” hemos bloqueado el acceso
desde cualquier otro archivo a la variable “ruedas”. Pero esto implica que ya
podremos mostrar el numero de ruedas desde el archivo “POO1.php” pues tenemos
bloqueado el acceso a esta variable.

Haremos un ligero cambio en el archivo “POO1.php”

<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();

echo "El numero de ruedas del auto es ".$mazda->ruedas."<br>"; // Error


echo "El numero de ruedas del nissan es ".$nissan->ruedas."<br>";// Error

?>

Si dejamos el archivo tal y como esta se generara dos errores debido a que ya no
tenemos acceso a la variable “ruedas” desde cualquier otro archivo que no sea desde
la clase “Auto”.

Para solucionar este inconveniente utilizaremos las funciones GETTERS Y SETTERS.

Funciones GETTERS y SETTERS


Las funciones o métodos SETTERS sirven para modificar las propiedades de un objeto.

Las funciones o métodos GETTERS sirven para ver las propiedades de un objeto.

Vamos a restructurar el archivo “herencias.php”: agregaremos una función


getters llamada “Get_Ruedas” y una función setters llamada “Set_Color”
<?php
class Auto
{
private $ruedas; // la variable “ruedas solo podrá ser utilizada dentro de la clase “Auto”
var $color;
var $motor;
function Auto()
{
$this->ruedas=4;
$this->color="";
$this->motor=1600;
}
function Get_Ruedas() // funcion GETTERS
{
Return $this->ruedas;
}

function Set_Color($color_Camion) // funcion SETTERS


{
$this->color=$color_Camion;
Echo “El color del camion es “.$this->color.”<br>”;
}

………………………

Haremos un ligero cambio en el archivo “POO1.php”

<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
Echo “El mazda tiene “.$mazda->Get_Ruedas().” Ruedas”;
$nissan->Set_Color;

?>
Y de esta forma hemos accedido al valor de la variable “ruedas” a travez de un
método GETTERS, y modificado el color del mismo por medio de la función o método
SETTERS.

Haremos un ligero cambio en el archivo “POO1.php”


<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
Echo “El mazda tiene “.$mazda->Get_Ruedas().” Ruedas”; // imprime 4
Echo “El nissan tiene “.$nissan->Get_Ruedas().” Ruedas”; // imprime 4
$nissan->Set_Color;

?>

Nota: Tal y como esta definida la varaiable “ruedas” no es posible acceder al numero
de ruedas del camión, a pesar de que se herendan todas las funciones creadas en la clase
“Auto” , debido a que la varible ruedas fue definida como “private” por lo tanto solo la
clase “Auto” puede tener acceso a ella. Para que la subclase “Camion” herede las
funciones GETTERS y SETTERS con los valores correspondientes a Camion debemos
cambiar la varible ruedas de tipo “PRIVATE” a “PROTECTED” y asi lograremos que se
hereden las modificaciones.

Vamos a restructurar el archivo “T4.2.1_POO_HerenciasModificadores.php ”: cambio de


la variable “private” a “protected”

<?php 
// definicion de una clase
class Pc{
    private  $mb;//asignacion de propiedades a la clase Auto
    var $ram;
    protected $procesador;
function Pc()// metodo constructor
{
    $this->mb="Gigabyte";
    $this->ram="4g";
    $this->procesador="i3";
    }
function iniciar() // asignacion de metodos de la clase Auto
    {
        echo "Inicializando"."<br>";
    }
function  get_mb(){
    return $this->mb;
}
function set_mb($mb){
    $this->mb=$mb;
    echo "<div class='alert alert-primary col-6' role='alert'>
            El mainborad Pc normal es :".$this->mb."</div>";
}
function get_procesador(){
    return $this->procesador;
}
function set_procesador($procesador){
    $this->procesador=$procesador;
    echo "<div class='alert alert-primary col-6' role='alert'>
            El procesador modificado  de una Pc normal es :".$this->procesador."</
div>";
}

}
class Pcgamer extends Pc {
    function Pcgamer()// metodo constructor
    {
        $this->mb="Asus";
        $this->ram="8g";
        $this->procesador="i7";
    }
// La subclase Pcgamer no tiene la funcion SistemaOperativo se debera crearla con la mi
sma estructura que en la clase Pc
function SistemaOperativo($VersionWindows,$Nbits,$procesador){
    $this->procesador=$procesador;
    echo "La Pc y la Pc gamer  tienen un S.O. : ".$VersionWindows."<br>";
    echo "El procesador modificado  es: ".$this->procesador."<br>";
    echo "Numero de bit del sistema operativo es : ".$Nbits;;
}
// Si se desea heredar los procesos de una funcion se debera incluir en la instruccion 
"parent::NOMBRE_SUPERCLASE"
function iniciar() // asignacion de metodos de la clase Auto
{
    parent::iniciar();
    echo "Pc Gamer";
}

}
?>

Haremos un ligero cambio en el archivo “POO1.php”

<?php 

include("T4.2.1_POO_HerenciasModificadores.php");
$Pc1 = new Pc(); // crear una instancia
$Pc2 = new Pcgamer();
        if (isset($_POST['dato']))
        {
            $version=$_POST['version']??0;
            $procesador=$_POST['procesador']??0;
            $Nbits=$_POST['Nbits']??0;

            echo "<div class='alert alert-primary col-6' role='alert'>
            El mainboard de una Pc normal es :".$Pc1->get_mb()."</div>";
            $Pc1->set_procesador($procesador);
            echo "<div class='alert alert-primary col-6' role='alert'>
            El procesador  de una Pc gamer es :".$Pc2->get_procesador()."</div>";
            echo "<div class='alert alert-primary col-6' role='alert'>";
            $Pc2->SistemaOperativo($version,$Nbits,$procesador);
            echo "</div>";
    echo "<div class='alert alert-primary col-6' role='alert'>La funcion iniciar :";
            $Pc2->iniciar();
            echo "</div>";
        }
?>

Variables y métodos Static

Nosotros al crear un sin números de objetos o instancias estamos creando un numero


de métodos y campos de igual numero que los objetos creados, por lo tanto esos
métodos podrían llegarse a comportar de una manera distinta en cada instancia.
Al convertir un método o variable en STATIC hacemos que este pertenezca única y
exclusivamente a la clase en que fue creado por lo tanto los otros objetos o
instancias creadas en base a esta clase van a compartir ese mismo método por lo
tanto no tendrán una copia de ese método.

Se creara un archivo llamado “Uso_Concesionario.php” y un archivo


“concesionario.php”.

En primer lugar creamos la clase llamada “compra_vehiculo”


Concesionario.php

<?php
class compra_vehiculo
{
    private $precio_base;
    function compra_vehiculo($modelo){
        if ($modelo=="Clasico")
        $this->precio_base=3000;
        else {if ($modelo=="Urbano")
                    $this->precio_base=4000;
                else { if ($modelo=="Compacto")
                        $this->precio_base=2000; 
                      else 
                        $this->precio_base=1000; 
                    }
                }
    }
    function climatizador(){
        $this->precio_base +=500;
    }
    function navegador_gps(){
        $this->precio_base +=1000;
    }
    function tapizado($color){
        if ($color=="blanco")
          $this->precio_base +=600;
        else {
            if ($color=="negro")
            $this->precio_base +=800;
            else
            $this->precio_base +=400;
         }
     }
    function precio_final(){
        return $valorfinal;
      }
}
?>

Uso_Concesionario.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <title>Document</title>
</head>
<body>

    <div class="container">
<div class="jumbotron">
    <h1 class="display-4">Variables estaticas</h1>
    <p class="lead">POO EN PHP</p>
    <hr class="my-4">
</div>
    <form method="post" action="">
        <div class="form-group col-3">
            <label for="modelo">Ingrese el modelo de auto</label>
            <input id="modelo" class="form-control" type="text" name="modelo">
        </div> 
        <div class="form-group col-3">
            <label for="color">Ingrese el color de su auto</label>
            <input id="color" class="form-control" type="text" name="color">
        </div> 
        
        <div class="form-check form-group">
  <input id="op1" class="form-check-input" type="checkbox" name="op1" value="opcion1">
            <label for="op1" class="form-check-label">Climatizacion</label>
         </div>
        
        <div class="form-check form-group">
  <input id="op2" class="form-check-input" type="checkbox" name="op2" value="opcion2">
            <label for="op2" class="form-check-label">Navegacion Gps</label>
        </div>
        <div class="form-group col-3">
  <input id="dato" class="form-control btn btn-primary" type="submit" name="dato">
        </div>
    </form>
    <?php 

    include ("T4.3.1_POO_ClaseConcecionario.php");
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
    
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    ?>
    </div>

    <script src="js/bootstrap.min.js"></script>
    <script src="js/jquery-3.5.1.min.js"></script>
</body>
</html>

Ahora definiremos una variable estatica llamada “descuento ” por lo tanto esta
variable no pertence a nigun objeto o instancia que hayamos creado, esta variable
estatica pertenece únicamente a la clase, es decir los objetos no tendrán una copia de
esta variable.
Iremos al archivo “concesionario.php” y agregamos una variable “valorfinal”.
Al ser estatica la variable “descuento” ningún método podrá tener acceso a esta, por
lo tanto se deberá utilizar la instruccion “self” para acceder a esta variable estatica
seguido de “::” y el nombre de la variable

<?php
class compra_vehiculo
{
    private $precio_base;
    static $descuento=1000;
    .
.
.
.

    function precio_final(){
        $valorfinal=$this->precio_base - self::$descuento;
        return $valorfinal;
      }
}
?>

De esta manera se ve afectado los resultados al volver a ejecutar el archivo


“Uso_Concesionario.php”

<?php 

    include ("T4.3.1_POO_ClaseConcecionario.php");
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
    
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    ?>

Existe un pequeño inconveniente al definir la variable como Static nosotros podremos


tener acceso a esa variable desde fuera de la clase.
Ya que la variable pertenece exclusivamente a la clase “compra_vehiculo” , para
poder hacer referencia a esa variable debemos escribir la siguiente
codificación fuera de la clase:

Nombre_clase::Variable_estatica

Uso_Concesionario.php
Ósea utilizando esta línea de comando desde cualquier parte yo puedo manipular el
valor de la variable “$descuento” afectando todos los resultados y eso no se puede
dar.

<?php 
    include ("Clase_Concesionario.php");
    compra_vehiculo::$descuento=1000;
    .
.
.
    ?>

Al agregar la línea anterior se ha modificado la variable statica $descuento. Por lo


tanto al ejecutar el archivo “Uso_Concesionario.php” todos los valores serán alterados
nuevamente.

<?php 
    include ("Clase_Concesionario.php");
    compra_vehiculo::$descuento=1000;
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
   
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    
    ?>
Definir una variable private static dentro de la clase “compra_vehiculo” seria la
solución a este problema y asi ya no tendríamos acceso a esta variable estatica:

<?php
class compra_vehiculo
{
    private $precio_base;
    private static $descuento=1000;
  .
.
.     
    function precio_final(){
        $valorfinal=$this->precio_base - self::$descuento;
        return $valorfinal;
      }
}
?>

Definiendo privada a una variable estatica, bloqueamos el acceso a la misma desde


cualquier otro archivo que no sea la clase.
Ahora se producirá un error por que ya no podemos acceder a esta variable estatica
por la propia clase asi que eliminaremos la linea.
compra_vehiculo::$descuento=1000;
Ahora debemos crear un método estatico que pueda manipular a esta VARIABLE y asi
manejar su valor.
Consideremos que el descuento será aplicado en cierta época o temporada, por lo
tanto no siempre se deberá aplicar el descuento , entonces deberíamos crear un
método estatico.
La función o método static se la puede ubicar en cualquier parte de la clase, esta se
llamara “descuento”, recordemos que para hacer referencia a una varaible estatica
debemos iniciar escribiendo “self::nonmbre_variable”

Concesionario.php
<?php
class compra_vehiculo
{
    private $precio_base;
    private static $descuento=0;
  .
.
.     
    static function descuento(){
        self::$descuento=1000
    }
    function precio_final(){
        $valorfinal=$this->precio_base - self::$descuento;
        return $valorfinal;
      }
}
?>
Luego nos dirigimos al archivo “Uso_Consecionario” sino llamamos a la función
descuento no se ejecutara ningún descuento:

 <?php 

    include ("T4.3.1_POO_ClaseConcecionario.php");
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    ?>

Luego para llamar a una función estatica se debe escribir la siguiente sintaxis:
Nombre_Clase::Nombre_funcion;

 <?php 

    include ("T4.3.1_POO_ClaseConcecionario.php");
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
    compra_vehiculo::descuento(); // accedemos al descuento
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    ?>

Asi de esta manera hemos logrado hacer el descuento para cada instancia creada.

Si desearamos aplicar este descuento en ciertas fechas podemos hacer el siguiente


cambio:
Concesionario.php
<?php
date_default_timezone_set('America/Guayaquil');
class compra_vehiculo
{
    private $precio_base;
    private static $descuento=0;
   .
.
.  
    static function descuento(){
        if (date("d-m-y")>"21-07-21") 
             self::$descuento=1000;
     }
    function precio_final(){
        $valorfinal=$this->precio_base - self::$descuento;
        return $valorfinal;
      }
}
?>

Solo si la fecha es superior al 21 de julio del 2021 se aplicara el descuento.

Ejercicio completo:

T4.3.1_POO_ClaseConcecionario.php.php
<?php
date_default_timezone_set('America/Guayaquil');
class compra_vehiculo
{
    private $precio_base;
    private static $descuento=0;
    function compra_vehiculo($modelo){
        if ($modelo=="Clasico")
        $this->precio_base=3000;
        else {if ($modelo=="Urbano")
                    $this->precio_base=4000;
                else { if ($modelo=="Compacto")
                        $this->precio_base=2000; 
                      else 
                        $this->precio_base=1000; 
                    }
                }
    }
    function climatizador(){
        $this->precio_base +=500;
    }
    function navegador_gps(){
        $this->precio_base +=1000;
    }
    function tapizado($color){
        if ($color=="blanco")
          $this->precio_base +=600;
        else {
            if ($color=="negro")
            $this->precio_base +=800;
            else
            $this->precio_base +=400;
        }
    }
    static function descuento(){
        if (date("d-m-y")>"21-07-21") 
             self::$descuento=1000;
     }
    function precio_final(){
        $valorfinal=$this->precio_base - self::$descuento;
        return $valorfinal;
      }
}
?>

T4.3.2_POO_UsoConcecionario.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <title>Document</title>
</head>
<body>

    <div class="container">
<div class="jumbotron">
    <h1 class="display-4">Variables estaticas</h1>
    <p class="lead">POO EN PHP</p>
    <hr class="my-4">
</div>
    <form method="post" action="">
        <div class="form-group col-3">
            <label for="modelo">Ingrese el modelo de auto</label>
            <input id="modelo" class="form-control" type="text" name="modelo">
        </div> 
        <div class="form-group col-3">
            <label for="color">Ingrese el color de su auto</label>
            <input id="color" class="form-control" type="text" name="color">
        </div> 
        <div class="form-check form-group col-3">
            <input class="form-check-input" type="checkbox" value="opcion1" name="op1">
            <label class="form-check-label" for="op1">
                Climatizacion
            </label>
        </div>
        <div class="form-check form-group col-3">
         <input class="form-check-input" type="checkbox" value="opcion2" name="op2" >
     <label class="form-check-label" for="op2">Navegacion Gps</label>
        </div>
        <div class="form-group col-3">
    <input id="dato" class="form-control btn btn-primary" type="submit" name="dato">
        </div>
    </form>
    <?php 
    include ("T4.3.1_POO_ClaseConcecionario.php");
    $modelo=$_POST['modelo']??'';
    $color=$_POST['color']??'';
    $op1=$_POST['op1']??'';
    $op2=$_POST['op2']??'';
    $compra_cliente1= new compra_vehiculo($modelo);
    if (isset($_POST['dato'])){
    if ($op1=="opcion1")
        $compra_cliente1->climatizador();
    if ($op2=="opcion2")
        $compra_cliente1->navegador_gps();
    compra_vehiculo::descuento(); // accedemos al descuento
    $compra_cliente1->tapizado($color);
    echo "El precio final del vehiculo es:".$compra_cliente1->precio_final();
    }
    ?>
    </div>

    <script src="js/bootstrap.min.js"></script>
    <script src="js/jquery-3.5.1.min.js"></script>
</body>
</html>
Arrays en Php (Vectores o Matrices)
Que son los arrays

Definición

Un array es una variable en la que podemos guardar varios datos o variables


agrupados a la vez. Estos forman una lista, la cual tiene un único nombre. Por
ejemplo podemos guardar en un array llamado $semana los días de la semana, o
en $meses los nombres de los meses del año, o en $clientes los nombres de los
clientes habituales de un negocio.
Podemos encontrarlos con el nombre de "vectores", "listas", "matrices", "arreglos" o
"tablas". En PHP los arrays pueden ser indexados o asociativos

Array indexados

La forma más simple de definir un array es mediante la instrucción array(). Dentro del


paréntesis escribimos los valores o variables que contiene el array, separados por
comas:

$temporadas=array("primavera", "verano", "otoño", "invierno");

Dentro del array podemos poner todo tipo de datos, tanto cadenas de texto, como
números enteros o decimales, o booleanos, o poner variables que contengan esos
datos, El siguiente array mezcla todo tipo de datos:

$miarray=array("Juan",,32,17.5,true);
Leer un array

Los arrays anteriores son arrays indexados, es decir, a cada elemento del array le
corresponde un número, el cual se utilizará para poder leerlo. Se empieza a contar
desde el número 0, por lo que el primer elemento del array será el número 0. Al
último elemento de un array de n elementos le corresponderá el número n-1.
Para leer cada elemento usaremos el siguiente

Sintaxis: 

$nombreArray[num_elemento].

Así para leer los elementos del array anterior escribiremos:

echo "$temporada[0], $temporada[1], $temporada[2], $temporada[3].";

El número de elemento debe ponerse entre corchetes [ ], mientras que en la


definición mediante la palabra clave "array" hemos usado paréntesis ( ).

También podría gustarte