Janggelan es un marco de PHP inesperado que le brinda facilidad. Es simple, pero poderoso y placentero de usar. Al igual que otros marcos, no tendrá dificultades al intentar comprender a Janggelan.
Janggelan está diseñado y se centra en el concepto MVC. Por lo tanto, intentamos evitar fusionar el sistema MVC con otras herramientas que pueden ayudarlo en el desarrollo, ya que puede reducir el rendimiento. Lo mantenemos adjunto, por supuesto, para ayudar a su desarrollo, pero vendrá con diferentes portadas.
Lea la documentación para obtener más información.
Sabemos que no podemos terminar este marco perfectamente, y tal vez no se correspondan con lo que desea. Pero, siempre tratamos de terminarlo mejor y hacerlo inesperado para usted. Puedes contribuir con nosotros.
Se agregó algunas herramientas nuevas.
Reescribió todos los guiones de Janggelan para un nuevo mejor rendimiento.
Reduce algunas cargas del servidor.
Se agregaron algunos métodos Model nuevos: where() , exec() , execute() .
Documentación agregada.
gZip de almacenamiento y compresión utilizado en .htaccess .
Php 7
Extensión PDO PHP
Descargue el archivo de Janggelan, extraiga al directorio de su aplicación.
Si desea publicar o instalar Janggelan para el alojamiento compartido, la forma más segura de hacer es colocar los archivos y directorios de Janggelan dentro de server root , y movió todos los contenidos de la carpeta public a public_html o www .
Ejecutará su solicitud desde el directorio public / public_html / www .
Si encontró problemas después de la instalación, consulte los permisos de archivo.
__ backend/
|__ .secrets/
|__ config/
|__ framework/
|__ global/
|__ register/
|__ vendor/
|__ autoload.php
|__ composer.json
|__ force.uri
__ public/
|__ assets/
|__ .htaccess
|__ index.php
__ worksheet/
|__ controllers/
|__ model/
|__ providers/
|__ tools/
|__ views/
|__ requests.php
En la primera vez, ejecutemos a Janggelan en su servidor. Asegúrese de que su sistema lo haya hecho con los System Requirements y la installation anterior.
Vaya a su directorio de aplicaciones que Janggelan archivó. Ingrese a la carpeta public . Como ejemplo, en Linux, puede hacer con esto:
cd /var/www/html/your_application/publicAbra un servidor localhost:
php -S localhost:8000O puede hacer arriba directamente con este comando:
php -S localhost:8000 -t /var/www/html/your_application/publicAhora, abra su navegador y visite localhost: 8000.
En Janggelan llamará a esto como requests . En otros marcos de PHP como Laravel, esto llamó como routes . Todas las solicitudes en Janggelan manejadas en worksheet/requests.php . Para crear una nueva solicitud, vaya a ese archivo. Allí verá un ejemplo request como este:
$ this -> request ( ' GET / @Hello::world ' ); El ejemplo anterior tiene un significado: "URI de solicitud / con el método de solicitud GET . Si la visita del usuario / y el URI es válido, se redirigirá y procederá al controlador Hello con world del método / función". Según el ejemplo, ahora puede crear sus solicitudes personalizadas con estas opciones: (el argumento o el parámetro 1 está separado por space ):
// Redirected to Controller.
// Request method can be 'GET' or 'POST'
$ this -> request ( ' GET /home @Hello::world ' );
// Redirected to View.
$ this -> request ( ' GET /home (viewName) ' );
// Redirected to Controller with Protected Rule 'login'.
$ this -> request ( ' GET /home @Hello::world !!login ' );
// Redirected to View with Protected Rule 'login'.
$ this -> request ( ' GET /home (viewName) !!login ' );
// Will proceed the Closure or Callback directly.
$ this -> request ( ' GET /home ' , function ()
{
// Do some stuff...
});
// Will proceed the Closure or Callback directly with Protected Rule 'login'.
$ this -> request ( ' GET /home !!login ' , function ()
{
// Do some stuff...
}); Aprenderá más sobre Protected Rule más adelante. Tenga en cuenta que use Closure o Callback solo cuando esté en las pruebas. Siempre recomendamos usar View o Controller como redireccionamiento.
Controller S se colocan en worksheet/controllers . Intente crear un nuevo Controller con la creación de un nuevo archivo, suponga que el nombre del archivo es MyController.php . Luego, en MyController.php , escriba este estilo Controller básico:
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} En la worksheet/requests.php , agregue una nueva solicitud que proceda al Controller .
$ this -> request ( ' GET /test @MyController::welcome ' ); Ahora, visite /test en su navegador. Si todo está bien, verá la salida: Welcome to my Controller. . El nombre del archivo Controller debe ser el mismo y coincidir con el nombre de la clase Controller . Además, debes cuidar Namespace . Si crea un controlador dentro de un nuevo directorio como este:
__ controllers/
|__ my_new_folder/
|__ MyController.php
Luego, el Namespace de su Controller debe ser así: (esto también se aplica para todo el sistema de espacios de nombres)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} Puede evitar extender frameworkparentsController si su Controller no es necesario para usar algunas funciones incorporadas como $this->LOAD_VIEW() , $this->GET_RULE() , etc.
Model S se coloca en worksheet/models . Model se utiliza para comunicarse con la base de datos. Entonces, cuando cree un Model , asegúrese de que corresponda a sus datos en la base de datos. Para usar Model , debe configurar la configuración de su base de datos en backend/.secrets/.db o ver la documentación sobre Configuring Database .
Después de que se haga arriba, intentemos crear un Model . Primero, cree un nuevo archivo en worksheet/models . Suponga que el nombre del archivo es User.php . Luego, escriba el contenido del archivo con este estilo Model básico:
<?php namespace model ;
class User extends framework parents Model
{
// This is your table name. It is required by system.
protected static $ table = ' user ' ;
// This is your table columns. Only required if you want to create new
// table into Database.
protected static $ columns = [
' id ' => ' INT(11) AUTO_INCREMENT PRIMARY KEY ' ,
' username ' => ' VARCHAR(255) NOT NULL ' ,
' password ' => ' VARCHAR(255) NOT NULL '
];
} En su Controller , llame a la clase Model :
<?php namespace controller ;
use model User ;
class MyController extends framework parents Controller
{
public function workingWithModel ()
{
// Initialize object of Model 'User'.
// Now you can use your Model.
$ user = new User ;
}
} Si no tiene una tabla con user de nombre antes, simplemente use el método create() para crear la tabla automáticamente cuando ejecuta el método Controller workingWithModel() .
$ user = new User ;
// this will create new table into Database with columns and properties that
// already defined on 'protected static $columns'.
$ user -> create (); Casi hecho, ahora solo necesitaba usar el Model con algunas funciones o métodos incorporados.
$ user = new User ;
// Open Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> open ();
// Close Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> close ();
// Delete all data in Model 'User' | table 'user'.
$ user -> delete ();
// Delete all data in Model 'User' | table 'user' | where id = 1 and username = name.
$ user -> delete ([ ' id ' => 1 , ' username ' => ' name ' ]);
// Insert new data to Model 'User' | table 'user' | to column username with value
// 'Linus Torvald'.
$ user -> insert ([ ' username ' => ' Linus Torvald ' ]);
// Update data in Model 'User' | table 'user' | where id = 1. Update username
// to value 'Linus Torvald'.
$ user -> update ([ ' username ' => ' Linus Torvald ' ], [ ' id ' => 1 ]);
// Get all data from Model 'User' | table 'user'.
$ user -> get ();
// Get 5 data results from Model 'User' | table 'user'.
$ user -> get ( 5 );
// Select all data from column 'username' of Model 'User' | table 'user'.
$ user -> select ( ' username ' )-> get ();
// Get data from column 'username' of Model 'User' | table 'user' | take 4 data results
// start from data number 2.
$ user -> range ( 4 , 2 )-> get ();
// Get data from Model 'User' | table 'user' | based on the clause 'WHERE id = 1'.
// You can do anything inside of 'clause()'.
$ user -> clause ( ' WHERE id = 1 ' )-> get ();
// Select data from column 'username' of Model 'User' | table 'user' |
// where id = 1 AND username = 'Linus Torvald'.
$ user -> where ([ ' id ' => 1 , ' username ' => ' Linus Torvald ' ])-> get ();
// Exec query.
// 'query' is anything sql queries such as 'DELETE * FROM' or 'SELECT *'.
$ user -> exec (query);
// Execute query with bind params (PDO prepare statement).
$ user -> execute (query, bindParams);
// You can custom you queries with chaining functions or methods like this:
$ user -> select ( ' username ' )-> range ( 4 , 2 )-> get ();
// Using prepare statement
$ user -> clause ( ' WHERE id=:id ' )-> bindParams ([ ' id ' => 1 ])-> get (); View se colocan en worksheet/views . Básicamente, View es una plantilla, puede ser el código HTML o PHP. Nada reglas especiales para View . Pero, en Janggelan, la extensión View es siempre .php . Puede escribir cualquier código dentro de View . Para usar una View , solo necesita llamarlo. Ejemplo:
// Calling View 'example.php' on requests.php
// Note that you cannot calling View with Closure or Callback.
$ this -> request ( ' GET / (example) ' );
// Calling View 'example.php' inside folder 'new_folder' on requests.php
$ this -> request ( ' GET / (new_folder/example) ' );
// Calling View 'example.php' on Controller
$ this -> LOAD_VIEW ( ' example ' );
// Calling View 'example.php' inside folder 'new_folder' on Controller
$ this -> LOAD_VIEW ( ' new_folder/example ' ); Si desea colocar View worksheet/views fuera de todas partes dentro public o public_html o www Directory, solo tiene que agregar / :::
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); Eso le dirá al sistema que busque la View en public/example.php o public_html/example.php o www/example.php .
Ahora, cómo pasar los datos a View . En realidad, puedes hacerlo simple. Simplemente compact() los datos: Tenga en cuenta que pasar los datos solo posibles al llamar View por Controller .
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); Luego, en el archivo View , example.php , simplemente llame a la variable:
<p> <?php echo $ data ; ?> </p> Janggelan proporciona algunas herramientas que puede usar, y tal vez útiles para sus casos de desarrollo. Se colocan en worksheet/tools . Para usarlos, solo tengo que llamar a su nombre de clase. Ejemplo:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule es un sistema en Janggelan para proteger su page , View o Uri , al igual que el sistema de inicio de sesión. Protected Rule almacenó datos anónimos que siempre se verifican cuando request usa este sistema. Si el usuario que visitará no tiene los datos anónimos válidos, el usuario se redirigirá automáticamente a target que se ha definido antes. Esto será fácil para proteger las páginas que desea que sea privada o solo para ciertos usuarios.
Para hacer una nueva Protected Rule , vaya al archivo de configuración en backend/config/protected.php . Puedes hacer más de una Protected Rule . Ejemplo:
<?php return [
// FALSE means, system will uses SESSION to store protected_rule data. Set it TRUE
// if you want to store the data in COOKIE.
' use_cookie ' => FALSE ,
' protected_rule ' => [
// Creating 'Protected Rule' with name 'login'.
// If the data is not valid, then redirect to Controller 'Example'
// method 'protected.'
' login ' => [
' on_false ' => [
' controller ' => ' Example ' ,
' method ' => ' protected '
],
],
// Creating 'Protected Rule' with name 'protect'.
// If the data is not valid, then redirect to View 'example'.
' protect ' => [
' on_false ' => [
' view ' => ' example ' ,
],
],
// Creating 'Protected Rule' with name 'myRule'.
// If the data is not valid, then redirect to uri '/wrong'.
' myRule ' => [
' on_false ' => ' /wrong '
],
]
]; Luego, para aplicar esa Protected Rule , vaya a worksheet/requests.php , y agregue una nueva Request : (¡la sintaxis es !! ):
// Applying Protected Rule 'login'.
$ this -> request ( ' GET / @Example::example !!login ' );
$ this -> request ( ' GET / (viewName) !!login ' );
$ this -> request ( ' GET / !!login ' , function ()
{
echo ' If you see this, then you are an Admin. ' ;
}); ¿Cómo establecer datos válidos para el usuario o Protected Rule ? Simplemente use esto construido funciones o métodos de TI.
$ this -> SET_RULE ( $ name ); También puede transmitir valores a los datos Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); Aquí hay funciones o métodos completos para Protected Rule :
// Check valid data for user or 'Protected Rule';
$ this -> CHECK_RULE ( $ name );
// Set new valid data for user or 'Protected Rule'.
$ this -> SET_RULE ( $ name , $ data = '' );
// Get 'Protected Rule' data.
$ this -> GET_RULE ( $ name );
// Delete valid 'Protected Rule' data.
$ this -> DESTROY_RULE ( $ name ); Para configurar su base de datos, vaya a backend/.secrets/.db . Contiene un objeto para configurar su base de datos:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }Establezca cada valores clave con las configuraciones de su base de datos.
Por defecto, Janggelan está validado URI para el directorio. Si el URI se refiere a una carpeta o directorio ISSET, el sistema Janggelan no se iniciará, ya que se redirige a esa carpeta o directorio. Si no desea que esto pase, abra backend/force.uri de archivos y reescribe un valor antiguo a TRUE .
Dali Kewara | [email protected]
Janggelan es un marco PHP de código abierto con licencia bajo la licencia MIT.