Documentación

Celular: +51 924 741 703

Correo: [email protected]

Ubicación: Lima Lima Perú

¿Por qué VAC?

No quise complicarme la vida, tratando de escoger un nombre para la metodología. Por ello fui muy simple y le puse VAC (*)
Traté de hacerlo lo más simple, al igual que la metodología en SÍ.
De esta forma, muchos personas, no solo programadores, podrían ser capaces de entender, utilizar y aprender PHP junto a la metodología.
La metodología en si ya tiene incluido muchos temas que se podrían aprender en clases o de forma autodidacta, como: Tipos de Datos, Condicionales, Bucles, Arreglos, Objetos, Clases, Instanciamientos, Sessiones, Cookies, etc.

  • VAC (*) solo es una abreviatura de:
    • V => Vistas
    • A => Acciones
    • C => Clases


¿Por qué usarla?

VAC Tiene mucho potencial de crecimiento constante y es apadtable a cualquier tipo de sistema.
VAC Soporta desde PHP7.4 hasta la última versión, sin tener problemas de deprecación, o rendimiento.
VAC Es compatible con 3 tipos de Bases de datos mas comunes hoy en día: MySQL, PostgreSQL y SQL Server.

  • Otros puntos son:
    • Por que es práctica.
    • Por que es muy fácil de entender, desarrollar e implementar.
    • Por que se puede reutilizar el código.
    • Por que no demora mucho tiempo en cargar.
    • Por que no haces trabajos en la vista. Solo muestras la información.
    • Por que es de código abierto.


Primeros pasos

Necesitas tener todo esto para poder empezar a utlizar la metodología y los archivos.

  • Descargar e instalar:
    • Navegador Web: Firefox Developers Edition yo utilizo este, Google Chrome o el se su preferencia. Recomiendo: Firefox Developers Edition, porque tiene una estabilidad mejor y un inspeccionador de código mejor que Google Chrome.
    • Servidor local: XAMPP yo utilizo este, WAMP o LAMP, ya que te ofresen un servidor virtual de manera local, donde puedes desplegar tus proyectos sin necesidad de tener un servidor o hosting.
    • Editor de código: Sublime Text yo utilizo este, Visual Studio Code, o el de tu preferenca
    • Cuenta de github: Es necesario que tengas una cuenta en GitHub, ya que el repositorio y las actualizaciones se subiran en ese lugar.
    • GitHub Desktop: Es necesario que tengas GitHub Desktop, ya que ofrece una interface gráfica, la cual es muy sencilla y fácil de usar, para poder subir y bajar cambios, con comentarios, sin tener que hacerlo por consola. (Es requerido tener la cuenta de github creada antes de la configuración de GitHub Desktop)
    • Composer y GitBash: Es opcional que tengas Composer y GitBash, ya que ambos de la mano te permiten descargar las actulizaciones de los paquetes y librerías.
    • Hosting y Dominio: Es opcional que tengas Hosting y Dominio, pero si estás interesado en alquilar alguno, te recomiendo BanaHosting, con el cual tengo mis productos de Hosting de manera confiable y eficiente. A un precio justo y con capacidades muy sofisticadas para tus proyectos.
    • Descargar el Repositorio: Utilizando GitHub Desktop, debes clonar Este Repositorio
        Estos son los pasos:
        1. Abrir GitHub Desktop
        2. Clic en la cinta de opciones superior izquierda: File
        3. Clic en la opción: Clone repository
        4. En el Modal Clone a repository: Clic en la terces opción: URL
        5. Pegar esta URL: https://github.com/fmorenoadmin/vac.git
        6. La ruta por defecto es: C:\xampp\htdocs no modificar a menos que xamp esté instalado en otro disco, o si usa otro servidor local colocar la carpeta pública de su servidor local, esto en automático creará la carpeta vac, asi que no es necesario colocarla
        7. Cargar Base de datos:
          1. Click aqui para abrir phpmyadmin, luego clic en la cinta de opciones: SQL
          2. Abrir y Copiar el contenido del Archivo: database.sql si no se ve con ese enlace la ruta es: C:/xampp/htdocs/vac/database.sql dentro del proyecto
          3. Pegar todo el contenido del archivo database.sql, dentro del bloque de la consulta SQL y Luego ejecutar
        8. Arbir el proyecto: Clic aqui para abrirlo. El proyecto VAC utiliza HTTPS, por lo que siempre le saldrá la alerta del certificado SSL, como sitio inseguro, solo debe dar clic en: Avanzado -> Acceder de todas formas


Archivos Importantes

Antes de comenzar, debes tener en cuenta que hay archivos que son importantes para el funcionamiento de la Metodología y/o Proyrecto:

  • Esta es la lista de Archivos importantes:
    • vac/database.sql
      En este archivo se debe almacenar todos los scripts SQL, para que tengas toda tu Base de Datos documentada, de esta manera si alguien mas quiere acceder a tu Base de Datos, va a poder tener una guia de toda la estructura de tus tablas.
        Estos son los ejemplos de lo que puedes y debes almacenar ahí:
      1. TABLAS => Creación de cada tabla, sus campos y sus tipos de datos. Las cuales se usan en todo el proyecto.
      2. INSERTS => Primeras ingresos de datos a cada tabla, que por defecto se colocan.
      3. ALTER => Si el proyecto las usa, es bueno tenerlas dentro del archivo.
      4. PROCEDURE => Si el proyecto las usa, es bueno tenerlas dentro del archivo.
      5. FUNCTION => Si el proyecto las usa, es bueno tenerlas dentro del archivo.
      6. etc
        Definición y Ejemplo:
      • DROP TABLE IF EXISTS tipos_usuarios;
        --Esto elimina la tabla: tipos_usuarios, solo SI EXISTE, caso contrario no hará nada.
        CREATE TABLE tipos_usuarios(
        --Crea la tabla tipos_usuarios, con los siguientes campos:
            id_tipo INT PRIMARY KEY AUTO_INCREMENT,
        --Este campo: id_tipo, es la Llave Primaria de la Tabla, la cual se AUTOCOMPLETA CORRELATIVAMENTE
            nombre_t VARCHAR(250) NULL DEFAULT NULL,
        --Este campo: nombre_t, será el nombre del tipo de usuario, el cual tiene un tipo de dato: Cadena de Texto de (250) carácteres
            descrip_t TEXT NULL DEFAULT NULL,
        --Este campo: descrip_t, será la descipción del tipo de usuario, el cual tiene un tipo de dato: Texto

        --Estos 8 campos que siguen: Sirven para poder manejar una auditoría de los registros de las Tablas
            created_at DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
            id_created INT NULL DEFAULT 1,
        --Estos 2 guardan el ID del empleado y FECHA, de la creación del registro.
            updated_at DATETIME NULL DEFAULT NULL,
            id_updated INT NULL DEFAULT 0,
        --Estos 2 guardan el ID del empleado y FECHA, de la última edición del registro.
            drop_at DATETIME NULL DEFAULT NULL,
            motivo_drop TEXT NULL DEFAULT NULL,
            id_drop INT NULL DEFAULT 0,
        --Estos 3 guardan el ID del empleado, el MOTIVO y FECHA, de la eliminación del registro.
            status INT NULL DEFAULT 1
        --Este campo sirve para el ESTADO del registro:
        --0 => Registro INACTIVO
        --1 => Registro ACTIVO
        --2 => Registro ELIMINADO
        );
        INSERT INTO tipos_usuarios (nombre_t) VALUES
            ('Super Administrador'),
            ('Administrador'),
            ('Vendedor'),
            ('Comprador'),
            ('Almacen'),
            ('Finanzas')
        ;
    • web/config/0code.php
      Archivo de configuración global para las cabeceras de los archivos.
        Estructura del archivo:
      • 1 <?php// Apertura de PHP
        2 require_once($rut.'config/constant.php');
        //Requere al archivo de las constantes en todas las vistas.
        4 $location = ((SCHU=='_qas') ? HTTPS : HTTP2).$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        //Esta variable: $location va a Almacenar la RUTA URL completa, actual en la cual nos encontrramos actualmente. Dependiendo del ESQUEMA ACTUAL.
        Si es: _qas entonces usará la constante: HTTPS que su valor es: https://, y si es _prd entonces usará la constante: HTTP2 que su valor es: https://www.
        6 $uri = $_SERVER['REQUEST_URI'];
        //Esta variable almacena solo la ruta URI, la cual va despues del dominio, ejemplo esta es la URI acutal: /. Esto varia dependiendo si estas en _qas o en _prd.
        8 $exp_url = explode('.', $_SERVER['HTTP_HOST']);
        //Esto lo que hace es: DIVIDIR el dominio en partes separandolas por: . (punto), de esta manera si existen puntos en el dominio de dividirá y se creará un array con la cadena dividida. Ejemplo:
        //
        array(4) {
          [0]=>
          string(3) "www"
          [1]=>
          string(3) "vac"
          [2]=>
          string(3) "net"
          [3]=>
          string(2) "pe"
        }
        
        //Esto va a variar dependiendo si estas en _qas o en _prd.
        9 if (SCHU == '_qas') {
        // el ESQUEMA es _qas entonces hago lo que está en las lineas 10, 11, 12 y 13
        10     if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") {
        // está vacía la variable HTTPS del array $_SERVER, ó el valor de la variable HTTPS del array $_SERVER es igual a: "off", entonces:
        11         header('Location: '.$location);
        // Lo redirecciono a la variable: $location, de la línea 4 de este archivo.
        12         exit();
        // Escapo de la ejecución del resto del archivo.
        13     }
        14 }else{
        // Caso contrario, cuando el ESQUEMA se _prd, ejecuto lo de las lineas: 15 al 24
        15     if ($exp_url[0] == 'www' || $exp_url[0] == 'www.' || $exp_url[1] == 'www' || $exp_url[1] == 'www.') {
        // Sí en la variable [0] del array: $exp_url, de la línea: 8. Es igual a: "www" ó es igual a: "www."
        // Ó sí en la variable [1] del array: $exp_url, de la línea: 8. Es igual a: "www" ó es igual a: "www."
        // Entonces ejecuto lo que está en las lineas: 16 al 20
        16         $location = HTTPS.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
        // Reescribo el valor de la variable: $location, Usando HTTPS, ya que su valor es: "https://".
        // Esto se hace, porque la URL yá tiene el: "www." en la URL
        17         if (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] === "off") {
        // está vacía la variable HTTPS del array $_SERVER, ó el valor de la variable HTTPS del array $_SERVER es igual a: "off", entonces:
        18             header('Location: '.$location);
        // Lo redirecciono a la variable: $location reescrita, de la línea 16 de este archivo.
        19             exit();
        // Escapo de la ejecución del resto del archivo.
        20         }
        21     }else{
        // Caso contrarío
        22         header("Location: ".$location);
        // Lo redirecciono a la variable: $location, de la línea 4 de este archivo.
        23         exit();
        // Escapo de la ejecución del resto del archivo.
        24     }
        25 }
    • web/config/constant.php
      Archivo de configuración global para las Variables Globales del Proyecto.
        Estructura del archivo:
      • 1 <?php// Apertura de PHP
        2 date_default_timezone_set("America/Lima");
        // Definimos la región en la que nos encontramos, para DATATIME. En mi Caso como estoy en Perú es America/Lima
        3 header("Access-Control-Allow-Origin: domain.ext");
        8 header("Access-Control-Allow-Origin: subdomain.domain.ext");
        // De la Línea: 3 al 8. Se definen los dominios que tienen permitido hacer uso de los recursos como: css, scss, js, woff, woff2, eot, ttf, otf, imágenes, videos, etc.
        10 define('HTTP', 'http://');
        // Definimos una CONSTANTE llamada HTTP, la cual tiene como valor: 'http://'
        11 define('HTTPS', 'https://');
        // Definimos una CONSTANTE llamada HTTPS, la cual tiene como valor: 'https://'
        12 define('HTTP2', 'https://www.');
        // Definimos una CONSTANTE llamada HTTP2, la cual tiene como valor: 'https://www.'
        14 define('TIT', ' | Metedología VAC-PHP');
        // Definimos una CONSTANTE llamada TIT, la cual tiene como valor: ' | Metedología VAC-PHP'. Y se usa para concatenar a la variable: $pagina de las vistas, y se mostrará como el Título de la página actual.
        15 define('TIPE', 'Metedología VAC-PHP');
        // Definimos una CONSTANTE llamada TIPE, la cual tiene como valor: 'Metedología VAC-PHP'. Y se usa como el nómbre del Proyecto, este calor es usa en varios archivos.
        17 define('DIRMOR', 'MORENOCL/');
        // Definimos una CONSTANTE llamada DIRMOR, la cual tiene como valor: 'MORENOCL/'. Esta carpeta es el lugar donde se almacenarán todos los archivos de: Clases del proyecto.
        18 define('DIRACT', 'ACTIONJF/');
        // Definimos una CONSTANTE llamada DIRACT, la cual tiene como valor: 'ACTIONJF/'. Esta carpeta es el lugar donde se almacenarán todos los archivos de: Acciones del proyecto.
        20 define('DIRERR', '/error/');
        // Definimos una CONSTANTE llamada DIRERR, la cual tiene como valor: '/error/'. Esta carpeta es el lugar donde se alamacenan los archivos de error .shtml
        21 define('CONF', 'config/');
        // Definimos una CONSTANTE llamada CONF, la cual tiene como valor: 'config/'. Esta carpeta es el lugar donde se alamacenan los archivos de configuración del Proyecto.
        22 define('VIEW', 'views/');
        // Definimos una CONSTANTE llamada VIEW, la cual tiene como valor: 'views/'. Esta carpeta es el lugar donde se alamacenan vistas que pueden ser llamadas desde varias vistas globales.
        24 define('DB_TYPE', 'mysqli_');
        // Definimos una CONSTANTE llamada DB_TYPE, la cual tiene como valor: 'mysqli_'. Y se usa para poder usar el proyecto con una base de datos MySQL.
        25 //define('DB_TYPE', 'pg_');
        // Definimos una CONSTANTE llamada DB_TYPE, la cual tiene como valor: 'pg_'. Y se usa para poder usar el proyecto con una base de datos PostgreSQL.
        26 //define('DB_TYPE', 'sqlsrv_');
        // Definimos una CONSTANTE llamada DB_TYPE, la cual tiene como valor: 'sqlsrv_'. Y se usa para poder usar el proyecto con una base de datos SQL Server.
        26 define('ROWS', 25);
        // Definimos una CONSTANTE llamada ROWS, la cual tiene como valor: 25. Y se usa para poder mostrar una cantidad de filas determinadas para las tablas del proyecto.
        // En caso de necesitar que una tabla en específico, muestre una cantidad de filas distanta a las demás. Solo necesitamos crear una nueva constante: define('ROWS2', 50);// con la cantidad de filas que necesitas en tu tabla.
        // Después de crear las constantes lo siguiente que debes de hacer es:
        1.     1.- En la Acción: if (isset($_POST['busq'])) {
              $total = ROWS;
              Modificar esta constante: ROWS por: ROWS2
        2.     2.- En la Clase: function listar($total,$pag,$rid,$uid,$url,$busq=null,$val=null,$test=false){
              $resultados_por_pagina = ROWS;
              Modificar esta constante: ROWS por: ROWS2
        // Con esto esa vista en específico, mostrará una cantidad de registros Distinta, de las demás.
        30 define('SCHU', '_qas');
        // Definimos una CONSTANTE llamada SCHU, la cual tiene como valor: '_qas'. Y se usa para poder especificar el ESQUEMA PRUEBAS del proyecto.
        31 //define('SCHU', '_prd');
        // Definimos una CONSTANTE llamada SCHU, la cual tiene como valor: '_prd'. Y se usa para poder especificar el ESQUEMA PRODUCCIÓN del proyecto.
        32 //define('SCHU_EMAIL', SCHU);
        // Definimos una CONSTANTE llamada SCHU_EMAIL, la cual tiene como valor: SCHU ESQUEMA ACTUAL. Y se usa para poder especificar el ESQUEMA ACTUAL EN EL ASUNTO DEL CORREO para el envío del Correo.
        // Cuando es _qas, el asunto del correo será: [QAS - PRUEBAS] SEGUIDO DEL ASUNTO.
        // Cuando es _prd, el asunto del correo será: EL ASUNTO.


Vídeo

Capacitación de la Metodología, realizada el día: Sábado 28 de Enero del 2024
Si desas puedes descargar el vídeo, pero este pesa: 3.24 Gb, entonces va a depender de la velocidad de tu internet.


Sobre el Creador

  • Todo sobre mí:
    • Me llamo: Frank Moreno Alburqueque
    • Tengo: 31 Años.
    • Soy de: Bellavista - Sullana - Piura. Y Resido en: Lima.
    • Soy: WebMaster, Partner de Microsoft.
    • Tengo: Más de 6 años como programador PHP
    • Trabajo con: CloudFlare para la seguridad de dominios y Servidores.
    • He desarrollado muchos Sistemas Webs, usando VAC.
    • He particido en el desarrollo de varios proyectos internacionales.