Add link to the Duckbrain repository.

This commit is contained in:
KJ 2024-05-13 01:45:19 -04:00
parent 1e23365fc3
commit af1c239b20
2 changed files with 17 additions and 1125 deletions

File diff suppressed because it is too large Load Diff

View File

@ -5,15 +5,15 @@
* Introducción
Duckbrain es un conjunto de librerías creadas especialmente pensando en hacer algo simple, que cuarquiera pueda deshacer y rearmar fácilmente. Gracias a esa versatilidad, puedes usarlo cualquier proyecto, peo por ello debes tener en cuenta que mientras más grande sea el proyecto, mayor será el nivel de ingeniería que se requerirá de tu parte para acondicionar esta herramienta a los requerimientos.
[[https://git.kj2.me/kj/duckbrain][Duckbrain]] es un conjunto de librerías creadas especialmente pensando en hacer algo simple, que cualquiera pueda deshacer y rearmar fácilmente. Gracias a esa versatilidad, puedes usarlo cualquier proyecto, peo por ello debes tener en cuenta que mientras más grande sea el proyecto, mayor será el nivel de ingeniería que se requerirá de tu parte para acondicionar esta herramienta a los requerimientos.
Otro punto fuerte que puedo dar de esta herramienta, es que te puede ser tremendamente útil si estás comenzando, ya que al ser tan pequeño y modificable, es más sencillo que lo comprendas y esto más adelante te ayudará a comprender cosas más grandes.
Ducho eso, vamos a comenzar...
** Estructura de archivos de duckbrain
** Estructura de archivos de Duckbrain
Al entrar a la carpeta de duckbrain encontraras esta estructura de archivos (ignoramos el readme.org porque no es necesario).
Al entrar a la carpeta de Duckbrain encontraras esta estructura de archivos (ignoramos el readme.org porque no es necesario).
#+begin_src ditaa
.
@ -42,7 +42,7 @@ Primero veamos las carpetas y luego los archivos:
En esta carpeta se encuentra todo el código PHP.
Como todo en Duckbrain, esta ruta se puede cambiar editando una variable en el archivo =index.php=.
Como todo en [[https://git.kj2.me/kj/duckbrain][Duckbrain]], esta ruta se puede cambiar editando una variable en el archivo =index.php=.
*** Carpetas: Controllers, Libs, Models, Middlewares, Views y Routers
@ -68,7 +68,7 @@ location / {
}
#+end_src
El archivo =index.php= es el punto de entrada de nuestra aplicación, aquí sucederá toda la magia inicial y sólo requiere de 20 míseras lineas para hacer ese gran trabajo y soportar sistemas tan grandes sin despeinarse ante frameworks más complejos como laravel o que son usados por cientos de miles de usuarios en cientos de instalaciones. Esto lo menciono no por creer que Duckbrain podría soportarlo, sino porque es algo que ya sucede, o sea, dichos sistemas ya existen: Los he hecho yo o he estado involucrado en parte del proyecto al punto de poder elegir Duckbrain como base para el mismo.
El archivo =index.php= es el punto de entrada de nuestra aplicación, aquí sucederá toda la magia inicial y sólo requiere de 20 míseras lineas para hacer ese gran trabajo y soportar sistemas tan grandes sin despeinarse ante frameworks más complejos como laravel o que son usados por cientos de miles de usuarios en cientos de instalaciones. Esto lo menciono no por creer que ttps://git.kj2.me/kj/duckbrain][Duckbrain podría soportarlo, sino porque es algo que ya sucede, o sea, dichos sistemas ya existen: Los he hecho yo o he estado involucrado en parte del proyecto al punto de poder elegir [https://git.kj2.me/kj/duckbrain][Duckbrain]] como base para el mismo.
El archivo =config.php=, como su nombre indica, es el archivo para colocar las configuraciones.
@ -78,7 +78,7 @@ Son básicamente librerías, cada una tiene como nombre lo que hace, no tiene mu
** Comprendiendo el arranque del sistema
Como la intención de este manual es que comprendas Duckbrain y no solo seas un robot que copia y pega de la documentación, vamos a calentar comprendiendo el código que arranca Duckbrain.
Como la intención de este manual es que comprendas [[https://git.kj2.me/kj/duckbrain][Duckbrain]] y no solo seas un robot que copia y pega de la documentación, vamos a calentar comprendiendo el código que lo arranca.
Como ya mencionamos antes, el archivo =.htaccess= se encarga de hacer funcionar las rutas virtuales, pero eso como programador que eres te debería hacer saltar una pregunta "¿Cómo es que hace eso?" y la respuesta es simple y puede que ya lo entiendas gracias al código de configuración de nginx que coloqué antes:
@ -98,7 +98,7 @@ Aquí carga el archivo =config.php=, o sea, carga la configuración. Para esta p
define('ROOT_DIR', __DIR__);
#+end_src
Solo está definiendo una constante =ROOT_DIR= que contiene como valor el directorio en donde está el archivo =config.php=, que también sería la raíz de Duckbrain.
Solo está definiendo una constante =ROOT_DIR= que contiene como valor el directorio en donde está el archivo =config.php=, que también sería la raíz de [[https://git.kj2.me/kj/duckbrain][Duckbrain]].
La siguiente línea también es la definición de una constante:
@ -165,7 +165,7 @@ Antes de ponernos a programar vamos a asegurarnos de estar en la misma pagina pr
** Usando un Webserver para el desarrollo
Desde luego esta la carpeta con Duckbrain supongo que ya la tienes con un webserver nginx o apache en localhost. Si no es el caso, al menos deberás instalarte PHP primero y una ves instalado, abres una terminal en la carpeta donde tienes Duckbrain y ejecutas:
Desde luego esta la carpeta con [[https://git.kj2.me/kj/duckbrain][Duckbrain]] supongo que ya la tienes con un webserver nginx o apache en localhost. Si no es el caso, al menos deberás instalarte PHP primero y una ves instalado, abres una terminal en la carpeta donde tienes Duckbrain y ejecutas:
#+begin_src bash
php -S localhost:80
@ -206,7 +206,7 @@ Router::get('/', function(Request $requets) {
});
#+end_src
Lo que estámos haciendo aquí, es llamar al método =get= de la clase =Router=. La clase, como indica su nombre, maneja las rutas, el método =get= indica el [[https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto#M%C3%A9todos_de_petici%C3%B3n][método HTTP]] que vamos a configurar (Duckbrain soporta los métodos HTTP: get, post, put, patch y delete).
Lo que estámos haciendo aquí, es llamar al método =get= de la clase =Router=. La clase, como indica su nombre, maneja las rutas, el método =get= indica el [[https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto#M%C3%A9todos_de_petici%C3%B3n][método HTTP]] que vamos a configurar ([[https://git.kj2.me/kj/duckbrain][Duckbrain]] soporta los métodos HTTP: get, post, put, patch y delete).
*Los parámetros que recibe la función son 2:*
- _La ruta que vamos a configurar:_ En este caso es =/= que es la raíz de nuestro dominio, o sea, =http://localhost/=. Prueba ahora mismo cambiar eso a =/hola= y verás que al refrescar ahora da ~error 404~, pero al entrar en =http://localhost/hola= nuevamente podrás ver el mensaje ~Hola mundo~.
@ -214,7 +214,7 @@ Lo que estámos haciendo aquí, es llamar al método =get= de la clase =Router=.
*La palabra reservada use*:
Al igual que en [[Extra: Namespaces][Extra: Namespaces]] la explicación de las primeras 2 líneas de este código, realmente no es algo de Duckbrain, sino del lenguaje mismo, pero de todos modos lo explicaré.
Al igual que en [[Extra: Namespaces][Extra: Namespaces]] la explicación de las primeras 2 líneas de este código, realmente no es algo de [[https://git.kj2.me/kj/duckbrain][Duckbrain]], sino del lenguaje mismo, pero de todos modos lo explicaré.
Primero que nada, si no quisieramos o no tuviéramos la posibilidad de usar =use=, nuestro código se vería así:
@ -277,7 +277,7 @@ CREATE TABLE notes (
);
#+end_src
Duckbrain soporta también MySQL/MariaDB, por lo que si quisieramos usar dicho gestor, el código sería así:
[[https://git.kj2.me/kj/duckbrain][Duckbrain]] soporta también MySQL/MariaDB, por lo que si quisieramos usar dicho gestor, el código sería así:
#+begin_src sql
CREATE TABLE notes (
@ -292,7 +292,7 @@ Voy a obviar la parte de cómo crear las bases de datos ya que ambas cosas se pu
*** Configuración de Duckbrain para la base de datos
Desde luego, Duckbrain va necesitar tener la información de la base de datos, por lo que abriremos el archivo y veremos algo como esto:
Desde luego, [[https://git.kj2.me/kj/duckbrain][Duckbrain]] va necesitar tener la información de la base de datos, por lo que abriremos el archivo y veremos algo como esto:
#+begin_src php
<?php
@ -330,7 +330,7 @@ Como nuestra base de dato es solo un archivo sqlite, no requerimos de =DB_HOST=,
** Modelos
Debo hacer incapié en que nada está escrito en piedra y podemos hacer las cosas de muchas manera con Duckbrain, pero en este caso, siguiendo la estructura MVC, vamos a crear modelos, vistas y controladores.
Debo hacer incapié en que nada está escrito en piedra y podemos hacer las cosas de muchas manera con [[https://git.kj2.me/kj/duckbrain][Duckbrain]], pero en este caso, siguiendo la estructura MVC, vamos a crear modelos, vistas y controladores.
Comenzando con los modelos, que en realidad para este proyecto sería en singular, vamos a crear un archivo llamado =Note.php= en =src/Models= con el siguiente contenido:
@ -678,7 +678,7 @@ public static function show(Request $request): void
}
#+end_src
En este código hay 2 cosas nuevas de Duckbrain que aún no hemos visto:
En este código hay 2 cosas nuevas de [[https://git.kj2.me/kj/duckbrain][Duckbrain]] que aún no hemos visto:
La primera serían los atributos =$request->params->id= y =$request->params->key= que propablemente te preguntes de dónde salen. Pero aún es momento de que te los explique, por lo que ten paciencia que no fatla mucho.