Janggelan est un cadre PHP inattendu qui vous donne une facilité. C'est simple, mais puissant et agréable à utiliser. Tout comme les autres cadres, vous n'aurez pas de difficulté lorsque vous essayez de comprendre Janggelan.
Janggelan est conçu et se concentre sur le concept MVC. Nous essayons donc d'éviter de fusionner le système MVC avec d'autres outils qui peuvent vous aider dans le développement, car cela peut réduire les performances. Nous continuons bien sûr à le joindre, pour aider votre développement, mais il sera livré avec différentes couvertures.
Veuillez lire la documentation pour plus d'informations.
Nous savons que nous ne pouvons pas terminer ce cadre parfaitement, et peut-être ne correspondait peut-être pas à ce que vous voulez. Mais, nous essayons toujours de le terminer mieux et de le rendre inattendu pour vous. Vous pouvez contribuer avec nous.
Ajout de nouveaux outils.
Réécrit tous les scripts de Janggelan pour de nouvelles meilleures performances.
Réduire certaines charges de serveur.
Ajout de nouvelles méthodes Model : where() , exec() , execute() .
Documentation ajoutée.
Utilisé la mise en cache et la compression gZip sur .htaccess .
Php 7
Extension PDO PHP
Téléchargez le fichier de Janggelan, extrayez-le dans le répertoire de votre application.
Si vous souhaitez publier ou installer Janggelan pour l'hébergement partagé, la façon la plus sûre de faire est de placer les fichiers et répertoires de Janggelan à l'intérieur de server root et déplace tous les contenus du dossier public dans public_html ou www .
Vous exécuterez votre application à partir du répertoire public / public_html / www .
Si vous avez trouvé des problèmes après l'installation, veuillez vérifier les autorisations de fichier.
__ 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
À la première fois, permet d'exécuter Janggelan dans votre serveur. Assurez-vous que votre système a fait avec les System Requirements et l' installation ci-dessus.
Accédez à votre répertoire d'application que les fichiers Janggelan placés. Entrez dans le dossier public . À titre d'exemple, dans Linux, vous pouvez en faire: ceci:
cd /var/www/html/your_application/publicOuvrez un serveur localhost:
php -S localhost:8000Ou vous pouvez faire ci-dessus directement avec cette commande:
php -S localhost:8000 -t /var/www/html/your_application/publicMaintenant, ouvrez votre navigateur et visitez LocalHost: 8000.
À Janggelan, vous appellerez cela comme requests . Dans d'autres frameworks PHP tels que Laravel, cela a appelé routes . Chaque demandes de Janggelan a traité sur le fichier worksheet/requests.php . Pour créer une nouvelle demande, accédez à ce fichier. Vous verrez un exemple request comme ceci:
$ this -> request ( ' GET / @Hello::world ' ); L'exemple ci-dessus signifie: "Demande URI / avec la méthode de la demande GET . Si l'utilisateur visite / et l'URI est valide, il sera redirigé et procédera au contrôleur Hello avec Method / Function world ". Sur la base de l'exemple, vous pouvez maintenant créer vos demandes personnalisées avec ces options: (L'argument ou le paramètre 1 est séparé par 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...
}); Vous en apprendrez plus sur Protected Rule plus tard. Remarque, utilisez Closure ou Callback uniquement lorsque vous êtes en test. Nous avons toujours recommandé d'utiliser View ou Controller comme redirection.
Les Controller sont placés dans worksheet/controllers . Essayez de créer un nouveau Controller avec la création d'un nouveau fichier, supposons que le nom du fichier est MyController.php . Ensuite, dans MyController.php , écrivez ce style Controller de base:
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} Sur la worksheet/requests.php , ajoutez une nouvelle demande qui procédera au Controller .
$ this -> request ( ' GET /test @MyController::welcome ' ); Maintenant, visitez /test sur votre navigateur. Si tout va bien, vous verrez la sortie: Welcome to my Controller. . Le nom du fichier Controller doit être identique et assorti du nom de classe Controller . De plus, vous devez prendre soin de Namespace . Si vous créez un contrôleur dans un nouveau répertoire comme ceci:
__ controllers/
|__ my_new_folder/
|__ MyController.php
Ensuite, l' Namespace de votre Controller devrait être comme ceci: (Cela s'applique également à tous les systèmes de noms)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} Vous pouvez éviter d'étendre frameworkparentsController si votre Controller n'a pas besoin d'utiliser certaines fonctions intégrées telles que $this->LOAD_VIEW() , $this->GET_RULE() , etc.
Model S est placé dans worksheet/models . Model est utilisé pour communiquer avec la base de données. Ainsi, lorsque vous créez un Model , assurez-vous qu'il correspond à vos données dans la base de données. Pour pouvoir utiliser Model , vous devez configurer votre configuration de base de données dans backend/.secrets/.db ou voir la documentation sur Configuring Database .
Une fois ci-dessus, essayons de créer un Model . Tout d'abord, créez un nouveau fichier dans worksheet/models . Supposons que le nom de fichier est User.php . Ensuite, écrivez le contenu du fichier avec ce style Model de base:
<?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 '
];
} Dans votre Controller , appelez la classe 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 vous n'avez pas de table avec user de nom, utilisez simplement la méthode create() pour créer automatiquement la table lorsque vous exécutez la méthode 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 (); Presque terminé, maintenant vous aviez juste besoin d'utiliser le Model avec certaines fonctions ou méthodes intégrées.
$ 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 sont placées dans worksheet/views . Fondamentalement, View est un modèle, il peut être du code HTML ou PHP. Rien de règles spéciales pour View . Mais, à Janggelan, l'extension View est toujours .php . Vous pouvez écrire tout le code dans la View . Pour utiliser une View , il vous suffit de l'appeler. Exemple:
// 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 vous souhaitez placer View extérieure worksheet/views à partout à l'intérieur du répertoire public ou public_html ou www , il vous suffit d'ajouter / :
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); Qui indiquera au système de trouver la View sur public/example.php ou public_html/example.php ou www/example.php .
Maintenant, comment transmettre des données en View . En fait, vous pouvez le faire simple. Just compact() Les données: notez que le passage des données possible uniquement lors de l'appel View par Controller .
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); Ensuite, sur le fichier View example.php , appelez simplement la variable:
<p> <?php echo $ data ; ?> </p> Janggelan fournit des outils que vous pouvez utiliser et peut-être utiles pour vos cas de développement. Ils sont placés dans worksheet/tools . Pour les utiliser, il suffit d'appeler le nom de leur classe. Exemple:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule est un système à Janggelan pour protéger votre page , View ou Uri , tout comme le système de connexion. Protected Rule des données anonymes stockées qui sont toujours vérifiées lorsque request a utilisé ce système. Si l'utilisateur cette visite n'a pas les données anonymes valides, l'utilisateur sera automatiquement redirigé vers target qui a été définie auparavant. Cela vous facilitera la protection des pages que vous souhaitez la rendre privée ou uniquement pour certains utilisateurs.
Pour créer une nouvelle Protected Rule , accédez au fichier config sur backend/config/protected.php . Vous pouvez faire plus d'une Protected Rule . Exemple:
<?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 '
],
]
]; Ensuite, pour appliquer cette Protected Rule , accédez à worksheet/requests.php et ajoutez une nouvelle Request : (la syntaxe est !! ):
// 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. ' ;
}); Comment définir des données valides pour l'utilisateur ou Protected Rule ? Utilisez simplement cette fonction ou méthodes informatiques construite.
$ this -> SET_RULE ( $ name ); Vous pouvez également transmettre des valeurs en données Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); Voici des fonctions ou des méthodes complètes pour 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 ); Pour configurer votre base de données, veuillez vous rendre sur backend/.secrets/.db . Il contient un objet pour configurer votre base de données:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }Définissez toutes les valeurs de clé avec vos configurations de base de données.
Par défaut, Janggelan est un URI validé pour le répertoire existe. Si l'URI faisant référence à un dossier ou un répertoire ISSET, le système Janggelan ne sera pas démarré, car il est redirigé vers ce dossier ou répertoire. Si vous ne voulez pas que cela se réalise, ouvrez backend/force.uri , et réécrivez l'ancienne valeur à TRUE .
Dali Kewara | [email protected]
Janggelan est un cadre PHP open d'open sous licence MIT.