Crear APIREST con php - sin FRAMEWORKS #2

Vamos a comenzar con la programación de nuestra APIREST con PHP para ello debemos tener la siguiente estructura en el folder del proyectò.

Estructura del proyecto

Carpeta Clases : En este folder guardaremos toda la lógica y clases que heredaran de una clase principal llamada conexión.

Carpeta Conexión : Este folder almacenaremos únicamente dos archivos conexion.php el cual contendrá la clase conexión que a su vez se encargara de la conexion con la base de datos. y el archivo config que es donde almacenaremos los datos para conectarnos a dicha base de datos

 

Archivo config

Como he dicho anteriormente es donde almacenaremos los datos para conectarnos a nuestra base de datos. Almacenaremos dichos datos en formato JSON de la siguiente manera.

{
	"conexion":{
			"server" : "direccion-de-tu-servidor",
			"user" : "nombre-de-tu-usuario",
			"password" : "tu-contraseña",
			"database" :"nombre-de-tu-basededatos",
			"port" : "3306"
	}
} 

Archivo conexion.php

Como he dicho anteriormente en este archivo escribiremos la lógica de conexión a la base de datos y lo haremos de la se siguiente manera

<?php
//comenzamos declarando el nombre de la clse
class conexion {
    //creamos los atributos de la clase
    private $server;
    private $user;
    private $password;
    private $database;
    private $port;
    private $conexion;

    //declaramos el contructor 
    function __construct(){
        //obtenemos los datos del archivo config mediente el metodo datosConexion
        $listadatos = $this->datosConexion();
        foreach ($listadatos as $key => $value) {
            $this->server = $value['server'];
            $this->user = $value['user'];
            $this->password = $value['password'];
            $this->database = $value['database'];
            $this->port = $value['port'];
        }
        $this->conexion = new mysqli($this->server,$this->user,$this->password,$this->database,$this->port);
        if($this->conexion->connect_errno){
            echo "algo va mal con la conexion";
            die();
        }

    }
    
    //obtenemos los datos del archivo config
    private function datosConexion(){
        $direccion = dirname(__FILE__);
        $jsondata = file_get_contents($direccion . "/" . "config");
        return json_decode($jsondata, true);
    }


    //convertiremos los datos obtenidos en utf8
    private function convertirUTF8($array){
        array_walk_recursive($array,function(&$item,$key){
            if(!mb_detect_encoding($item,'utf-8',true)){
                $item = utf8_encode($item);
            }
        });
        return $array;
    }

    //esta funcion la invocaremos cuando necesitemos utilizar un select
    public function obtenerDatos($sqlstr){
        $results = $this->conexion->query($sqlstr);
        $resultArray = array();
        foreach ($results as $key) {
            $resultArray[] = $key;
        }
        return $this->convertirUTF8($resultArray);

    }

    //esta funcion la invocaremos cuando necesitemos utilizar insert,delete,update
    public function nonQuery($sqlstr){
        $results = $this->conexion->query($sqlstr);
        return $this->conexion->affected_rows;
    }


    //UNICAMENTE INSERT YA QUE NOS DEVOLVERA EL ULTIMO ID INSERTADO 
    public function nonQueryId($sqlstr){
        $results = $this->conexion->query($sqlstr);
         $filas = $this->conexion->affected_rows;
         if($filas >= 1){
            return $this->conexion->insert_id;
         }else{
             return 0;
         }
    }
     
    //encriptar CONTRASEÑAS

    protected function encriptar($string){
        return md5($string);
    }

}


?>
 

Conectar PHP con MYSQL

En el siguiente video te muestro como crearlo con mas detalle

¿Te gusta este tipo de contenido ?

Nos vemos en la próximo post de este blog!!

No te olvides de suscribirte a mi canal de YouTube y apuntarte mis cursos de desarrollo web profesional que te ayudarán muchísimo en tu camino como programador o desarrollador web .