Curso de Bootstrap PHP Modulo1
Curso de Bootstrap PHP Modulo1
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
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.
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.
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.
https://getbootstrap.com/
De ahí procedemos a descargar el archivo correspondiente que tendra los Css y Jss requeridos:
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;
?>
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.
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>";
?>
<?php
Function Datos()
{
Echo “línea de ejecución de la función”;
}
?>
<!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>
<?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.
<?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 ().
<?php
Function IncrementarNumero()
{
Static $constante= 0;
$constante++;
Echo "<br>".$constante;
}
IncrementarNumero();
IncrementarNumero();
IncrementarNumero();
?>
Su ejecución es:
(A) (B)
<?php <?php
$txt1 = "Hola"; $txt1 = "Hola";
$txt2 = "como estas"; $txt2 = "como estas";
$y = 4; $y = 4;
<?php
echo strlen("HOLA MUNDO!"); // Salida 11
?>
<?php
echo str_word_count("HOLA MUNDO!"); // Salida 2
?>
<?php
echo strrev("Hola mundo!!!"); // salida !!!odnum aloH
?>
<?php
echo strpos("Hola mundo!", "mundo"); // salida 5
?>
<?php
$cadena=”Hola Mundo!!”;
echo str_replace("Mundo", "Camilla",$cadena); // Hola Camilla!!
?>
Comparación de cadenas
<?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
Sintaxis
define(Nombre, valor,Valor_boolean)
parámetros:
Ejemplo
<?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):
3.10-Funciones Matematicas
pow(base,exp);
Raíz cuadrada: calcula la raiz cuadrada del número pasado como argumento.
sqrt(num);
log(num,base);
decbin(num);
bindec(num);
decoct(num);
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);
abs(num);
ceil(num);
floor(num);
number_format(num,decimales,"separacion_decimal","separacion_miles")
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.
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;
}
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.
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.
Sintaxis
Ejemplo
<?php
$x = 1;
while($x <= 5) {
echo "El numero es: $x <br>";
$x++;
}
?>
Sintaxis
do {
Codigo a ejecutarse;
} while (condicion es verdadera);
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:
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.
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).
Ejemplo
<?php
function EscribirSms() {
echo "Hola MUndo!!!";
}
EscribirSms(); // llama a al funcion
?>
<?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");
?>
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);
?>
<?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;
?>
<?php
Function Incrementar(&$valor)
{ $valor++;
return $valor;
}
$numero=5;
Echo Incrementar($numero).”<br>”;
Echo $numero;
?>
<?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
<?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!!
?>
<?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)
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.
Inicialización 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();
?>
<?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 establece_color($color_auto)
{ $this->color=$color_auto;
Echo “El color del auto es:”. $this->color.”<br>”;
}
.
.
.}
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();
?>
</body>
</html>
Herencias
Herencia en POO . Superclases y subclases
Reutilización de código
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
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.
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.
<body>
<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
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
}
}
?>
<body>
<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
</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.
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.
?>
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”.
}
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.
<?php
include("herencias.php");
$mazda= new Auto();
$nissan= new Camion();
?>
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”.
Las funciones o métodos GETTERS sirven para ver las propiedades de un objeto.
………………………
<?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.
?>
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.
<?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";
}
}
?>
<?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>";
}
?>
<?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;
}
}
?>
<?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();
}
?>
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;
.
.
.
?>
<?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;
}
}
?>
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.
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
Array indexados
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].