sábado, 3 de diciembre de 2016

Curso Json. XAMP. Clases.

XAMP


Apache + PHP + MariaDB(MySQL se cerro) + Pearl

Se utilizara XAMP para intercambiar datos con la aplicación móvil.

Video de la página oficial(en ingles).


Apache ofrece muchas ventajas, es posible escoger que directorio utilizar para los archivos de la web. Por ejemplo, utilizar una Raspberry y conectar un disco externo para alojar archivos(videos, la interfaz de administración, probar desarrollos o respaldos), mientras ella ejecuta su sistema desde una tarjeta SD.

Por favor: no uses C:/Program Files.

Solo usaremos

Apache
PHP
Maria

MyAdmin.

Se recomienda una partición para archivos y una de sistema, pero eso es de otro tema. Por suerte XAMPP permite montar en raíz un directorio. Y si el directorio web sera muy pesado, se podría montar en un disco externo, es cuestión de modificar el httpd.conf del apache.


Inicio>XAMPP>XAMPP Control Panel

Idioma
Español o Inglés

Abrirá en alemán, reiniciamos el panel de control.

Cerramos la ventana y del menú de la barra de tareas presionamos Bendeen.

Lo abrimos.


Arrancamos mysql y apache. Nos vamos al myadmin.

La instalación ha sido exitosa.

Para usuarios de Linux, recuerden no correr el demonio directamente como root, creen el usuario www.

Lo siguiente es crear un usuario para la conexión, una tabla para intercambiar datos, y un "manipulador" de la conexión.


Recomiendo(y cualquiera que conozca del tema lo haría) guardar valores que se repiten demasiado en "enums". Por ejemplo marca y modelo. No vamos a llenar discos duros con datos redundantes de un esquema que podemos mantener en cache. Además el gasto energético, CPU, ancho de banda, étc.

Recomendación: usar un XML para esas listas, debe ser el mismo para el modo Web que para el móvil, así cuando actualices el del servidor, poner el mismo en el update de la app móvil.

Código


Buscamos la carpeta htdocs, se puede trabajar con un bloc de notas, pero recomiendo Visual Studio Code o notepad ++.

Clase vehículo

<?php

class vehiculo

{

public $numeroEjes = 0;
public $llantasEje = 0;
public $marca=0;
public $modelo=0;
public $uso=0;

}

?>

Clase auto

<?php

include('vehiculo.php');

class auto extends vehiculo{

public $motor=0;
public $numeroAsientos=0;
public $GPS=0;
public $camaraTrasera=0;

}

?>



Observarán que es versátil, puedo poner una bicicleta: 2 ejes, 1 llanta por eje, marca, el índice de una lista de marcas, modelo, de BMX, el uso: privado, público, transporte(públicas, las que prestan algunas ciudades, como la CDMX), naturalmente de una lista.

Creamos un auto. Para leer los valores podemos usar un switch e imprimirlos.

<?php

include('auto.php');

$miAuto=new auto;

?>

No debe arrojar error.

Recuerden desactivar las alertas en producción.

Ahora veremos como devolver valores.

Las funciones de PHP nos servirán para esto. Recuerden deben encontrar una forma de programar que les acomode, si trabajan en equipo llegar a un acuerdo para el mantenimiento adecuado del código. El código debe ser simple, para que sea fácil de comprender, pero debe cubrir las expectativas.

Aquí vemos los enums en prueba:

<?php

class vehiculo

{

public $numeroEjes = 0;
public $llantasEje = 0;
public $marca=0;
public $modelo=0;
public $uso=0;

privade $marcas=array("VolksWagen", "Chevrolet", "Subaru", "Cherokee", "Toyota", "KIA", "Nissan");

privade $modelos=array("leaf", "tornado", "beetle", "crossfox");

privade $usos=array("público", "partícular", "gubernamental");

function getCadenaMarcas(){

return $this->marcas[$this->marca];

}

function getCadenaModelo(){

return $this->modelos[$this->modelo];

}

function getCadenaUso(){

return $this->usos[$this->uso];

}

}

?>

<?php

include('vehiculo.php');

class auto extends vehiculo{

public $numeroAsientos=0;
public $motor=0;
public $GPS=0;
public $camaraTrasera=0;

//motor puede ser más rico, pero en vehículo ya éxplique a lo que van los enums

privade $motores=array("diesel", "magna", "premium", "híbrido", "eléctrico");

function getMotorCadena(){

   return $this->motores[$this->motor];

}

function getGPS(){

   switch $this->GPS{

      case 0:

         return "Si";

      break;

      case 1:

         return "No";

      break;

}

function getCamaraTrasera(){

   switch $this->camaraTrasera{

      case 0:

         return "Si";

      break;

      case 1:

         return "No";

      break;

}

}

}

?>

<?php
//error_reporting('0');
include('auto.php');

//echo "Hola";

$miAuto=new auto();


echo $miAuto->getMotorCadena();
//recuerda que el motor se fija en la variable

?>

Android solo recibirá directamente el número y lo deberá interpretar.

Aquí se puede hacer algo parecido con javascript, para el entorno web, json es recomendable.

El link de la carpeta:

https://drive.google.com/drive/folders/0B0zrGMhduaXIWURlV1NyczFzaVU?usp=sharing

En el siguiente episodio una base de datos, luego Json y app estara terminada.