
Un framework PHP MVC léger en vedette:
FOOTUP MVC Framework
├── app
│ ├── Config
│ │ ├── Autoload.php
│ │ ├── Config.php
│ │ ├── Constants.php
│ │ ├── Email.php
│ │ ├── Form.php
│ │ ├── Fuel.php
│ │ ├── Paginator.php
│ │ └── Routes.php
│ ├── Controller
│ │ ├── BaseController.php
│ │ └── Home.php
│ ├── Functions.php
│ ├── Lang
│ ├── Libs
│ ├── Middle
│ │ └── Maintenance.php
│ ├── Migration
│ ├── Model
│ │ └── Contact.php
│ ├── Seed
│ └── View
│ └── home.php
├── composer.json
├── core
│ ├── Boot.php
│ ├── Cli
│ │ ├── Commands
│ │ │ ├── Assets.php
│ │ │ ├── Controller.php
│ │ │ ├── Middle.php
│ │ │ ├── Migfree.php
│ │ │ ├── Migrate.php
│ │ │ ├── MigrateTrait.php
│ │ │ ├── Migrown.php
│ │ │ ├── Migrup.php
│ │ │ ├── Model.php
│ │ │ ├── Multiple.php
│ │ │ ├── Scaffold.php
│ │ │ ├── Seeder.php
│ │ │ ├── Seed.php
│ │ │ ├── Serve.php
│ │ │ └── View.php
│ │ ├── Exception
│ │ │ ├── Exception.php
│ │ │ ├── InvalidArgumentException.php
│ │ │ ├── InvalidParameterException.php
│ │ │ └── RuntimeException.php
│ │ ├── Helper
│ │ │ ├── InflectsString.php
│ │ │ ├── Normalizer.php
│ │ │ ├── OutputHelper.php
│ │ │ └── Shell.php
│ │ ├── Input
│ │ │ ├── Argument.php
│ │ │ ├── Command.php
│ │ │ ├── Groupable.php
│ │ │ ├── Option.php
│ │ │ ├── Parameter.php
│ │ │ ├── Parser.php
│ │ │ └── Reader.php
│ │ ├── IO
│ │ │ └── Interactor.php
│ │ ├── Konsole.php
│ │ ├── logo
│ │ ├── logo_txt
│ │ ├── Output
│ │ │ ├── Color.php
│ │ │ ├── Cursor.php
│ │ │ ├── Table.php
│ │ │ └── Writer.php
│ │ └── Tpl
│ │ ├── Controller.tpl
│ │ ├── Middle.tpl
│ │ ├── Migrate.tpl
│ │ ├── Model.tpl
│ │ ├── Seed.tpl
│ │ └── View.tpl
│ ├── Config
│ │ ├── Autoload.php
│ │ ├── Config.php
│ │ ├── DotEnv
│ │ │ ├── DotEnv.php
│ │ │ └── Exception
│ │ │ ├── Exception.php
│ │ │ └── InvalidPathException.php
│ │ ├── Email.php
│ │ └── Mime.php
│ ├── Controller.php
│ ├── Database
│ │ ├── DbConnection.php
│ │ ├── Migration
│ │ │ └── Migration.php
│ │ ├── Migration.php
│ │ ├── QueryBuilder.php
│ │ ├── Schema
│ │ │ ├── Column.php
│ │ │ ├── ForeignKey.php
│ │ │ ├── IndexColumn.php
│ │ │ ├── Index.php
│ │ │ ├── Schema.php
│ │ │ └── Table.php
│ │ ├── Seeder
│ │ │ └── Seeder.php
│ │ └── Seeder.php
│ ├── Debug
│ │ ├── Contracts
│ │ │ └── HandlersInterface.php
│ │ ├── Exceptions
│ │ │ ├── CompileErrorException.php
│ │ │ ├── CompileWarningException.php
│ │ │ ├── CoreErrorException.php
│ │ │ ├── CoreWarningException.php
│ │ │ ├── DepricatedException.php
│ │ │ ├── NoticeException.php
│ │ │ ├── ParseErrorException.php
│ │ │ ├── RecoverableErrorException.php
│ │ │ ├── StrictErrorException.php
│ │ │ ├── UserDeprecatedException.php
│ │ │ ├── UserErrorException.php
│ │ │ ├── UserNoticeException.php
│ │ │ ├── UserWarningException.php
│ │ │ └── WarningException.php
│ │ ├── Handlers.php
│ │ ├── HandlersSetter.php
│ │ ├── Reporter.php
│ │ ├── resources
│ │ │ ├── assets
│ │ │ │ ├── css
│ │ │ │ │ ├── custom.min.css
│ │ │ │ │ ├── enlighterjs.min.css
│ │ │ │ │ └── spectre.min.css
│ │ │ │ └── js
│ │ │ │ ├── custom.min.js
│ │ │ │ └── enlighterjs.min.js
│ │ │ └── views
│ │ │ └── 500.php
│ │ ├── Support
│ │ │ └── functions.php
│ │ └── View.php
│ ├── Files
│ │ ├── File.php
│ │ └── FileSystem.php
│ ├── footup-ascii-art.png
│ ├── Footup.php
│ ├── Functions.php
│ ├── Html
│ │ ├── Form.php
│ │ └── Html.php
│ ├── Http
│ │ ├── Request.php
│ │ ├── Response.php
│ │ └── Session.php
│ ├── I18n
│ │ ├── Exceptions
│ │ │ └── I18nException.php
│ │ ├── TimeDifference.php
│ │ └── Time.php
│ ├── Lang
│ │ ├── fr
│ │ │ ├── core.json
│ │ │ ├── date.json
│ │ │ ├── db.json
│ │ │ ├── email.json
│ │ │ ├── file.json
│ │ │ ├── http.json
│ │ │ ├── paginator.json
│ │ │ ├── validator.json
│ │ │ └── view.json
│ │ └── Lang.php
│ ├── Model.php
│ ├── Orm
│ │ ├── BaseModel.php
│ │ └── ModelQueryBuilder.php
│ ├── Paginator
│ │ ├── AbstractPaginator.php
│ │ ├── Page.php
│ │ ├── PaginatorException.php
│ │ ├── PaginatorInterface.php
│ │ ├── Paginator.php
│ │ └── View
│ │ └── default.php
│ ├── Routing
│ │ ├── Middle.php
│ │ ├── Route.php
│ │ └── Router.php
│ └── Utils
│ ├── Arrays
│ │ ├── Arrayable.php
│ │ ├── ArrDots.php
│ │ ├── Arr.php
│ │ ├── Collection.php
│ │ └── Dots.php
│ ├── ClassLocator.php
│ ├── Shared.php
│ ├── Str.php
│ └── Validator
│ ├── Validate.php
│ └── Validator.php
├── env
├── footup
├── LICENSE
├── public
│ ├── assets
│ │ ├── avatar.jpg
│ │ ├── css
│ │ │ └── style.css
│ │ └── js
│ │ └── script.js
│ ├── error
│ │ ├── 404.html
│ │ └── 500.html
│ ├── favicon.svg
│ ├── index.php
│ └── uploads
├── README.md
└── server.php
Footup MVC Framework se concentre principalement sur la vitesse et le minimaliste. C'est 250 Ko Zip , 148 Ko XZ . Il rend avec 0,001 secondes (j'ai utilisé un environnement PHP 8,0,7 pour l'écrire et le tester).
Mon objectif est de faire une chose que je suis la première personne à l'utiliser avec facilité. J'ai ajouté des fonctionnalités qui m'aident à travailler plus rapidement sur mon travail de toute la journée.
Yo! Vous pouvez le télécharger directement et l'utiliser sans avoir besoin d'une dépendance externe. Il prend en charge les bibliothèques de compositeurs, mais je n'ai pas encore publié la place à Packagist.
Vous avez donc besoin:
Pour l'instant, j'ai ajouté des commandes de générateurs
Pour montrer l'aide:
nuka@hacker_pc: ~ $ php footup Pour générer un contrôleur:
nuka@hacker_pc: ~ $ php footup controller controllerNameNe sois pas si timide, essayez-vous
La demande et la classe du routeur sont les moteurs BMW qu'ils ont beaucoup de choses utiles. Ici comment nous utilisons la demande:
// using get function to get the page=3 present in the url
$ this -> request -> get ( " page " );
// you can use like this to get the page
$ this -> request -> page ;
// What ? you typing enough ? and that ?
request ()-> page ;
// And What ? how to get file with name: image ?
// You can use as below
$ this -> request -> image ; // or $this->request->file('image')
// And What if image[] as multiple files ?
// You can use as below
$ this -> request -> files ( ' image ' );
# Yes you can access the request using the global function request() // using get function to validate the page=3 present in the url
$ this -> request -> withGetInput ()-> validate ([ " page " => " is:int " ]);
// What ? you typing enough ? and that ?
request ()-> withGetInput ()-> validate ([ " page " => " is:int " ]);
# Yes you can access the request using the global function request() // using get function to validate the page=3 present in the url
$ this -> response -> json ([ " page " => 2 ]); // second parameter to echo directly
# Yes you can access the response using the global function response()Il s'agit d'une classe partagée, donc les données avec elles restent les mêmes, voici l'exemple:
// using set function to set session value
$ this -> session -> set ([ " page " => 2 ]); // or $this->session->page = 2
// What ? you typing enough ? and that ?
session ( " page " , 2 ); // session()->set("page", 2); or session()->page = 2;
// What ? i want to get the page ?
// So
session ( " page " ); // session()->get("page"); or session()->page;
# Yes you can access the session using the global function session() as shownSi vous validez les données avec Validator, la fonction valide renvoie True si tout est passé et faux sinon
// Via request
// with post data
$ this -> request -> withPostInput ()-> validate ([ " page " => " is:int " ]);
// With post and get data
request ()-> withInput ()-> validate ([ " page " => " is:int " ]);
// With other data
request ()-> with ([ " page " => 2 ])-> validate ([ " page " => " is:int " ]);
// So how to get Error ?
// Simple
validator ()-> getError ( " page " ); // request()->getValidator()->getErrors(); to grab all
# Yes you can access the validator using the global function validator()
# You can validate using the global function validate() too <?php
namespace App Model ;
use Footup Model ;
class Contact extends Model{
// If not defined, the name of this class is used
protected $ table = ' contact ' ;
/**
* PrimaryKey
*
* @var string
*/
protected $ primaryKey = ' idcont ' ;
protected $ beforeInsert = [];
protected $ beforeFind = [];
protected $ beforeDelete = [];
protected $ beforeUpdate = [];
protected $ afterInsert = [];
protected $ afterFind = [];
protected $ afterDelete = [];
protected $ afterUpdate = [];
}
// Using the model Contact
. . . . .
use App Model Contact ;
. . . .
// Retrouve tout | retrieve all
$ contacts = Contact:: all ();
------------ others methods --------------
$ c = new Contact();
$ contacts = $ c -> get ();
foreach ( $ contacts as $ contact )
echo $ contact -> email ;
# you can also use
$ contact -> setEmail ( " [email protected] " );
// Generating form ******
$ contact -> getForm ();
var_dump ( $ c -> firstByEmail ( ' [email protected] ' ));
. . . . . . . . . . . . . . . . . . . . . . . . . .
demande ($ index = null, $ arg = null)
/**
* Une fonction pour exposer l'objet Request
*
* @param mixed $index
* @param mixed $arg
* @return FootupHttpRequest|mixed
*/
request ( $ index = null , $ arg = null )appeléController ($ withamespace = true)
/**
* Retrouve le controlleur en cours d'utilisation
*
* @param boolean $withNamespace
* @return string
*/
calledController ( $ withNamespace = true )CalledMethod ()
/**
* Retrouve la méthode couremment utilisée
*
* method of the current called controller
*
* @return string
*/
calledMethod ()Et de nombreuses mœurs d'autres fonctions globales
#eg. file field = image
# @uses one below
request ( ' image ' ) or request ()-> image or request ()-> file ( ' image ' )
# remember that request is available directly in the controller so :
$ this -> request ->image
# et pour enregistrer le fichier | and for saving :
request ( ' image ' )-> save (?string $ destinationName = null , bool $ replace = true ) or request ()-> image -> save (?string $ destinationName = null , bool $ replace = true ) or request ()-> file ( ' image ' )-> save (?string $ destinationName = null , bool $ replace = true )
# remember that request is available directly in the controller so :
$ this -> request -> image $ contact = new ContactModel ();
$ contact -> getForm ( " # " , [], true /* true to print */ )
# or use
echo $ contact -> getForm ();Utiliser $ reset = false si vous ne souhaiter pas recommandateur une requête. Utilisez $ table couler changere de table (cette méthode ve L'Ertiliserez Rarement)
- $ Type DOIT ÊTRE UN DANS ['Inner', 'gauche extérieur', 'extérieur droit', 'Full Exter']
- $ Fields String | Array Ex: "user.id = article.id_user" | ["user.id" => "Article.id_user"]
- $ Fields String | Array Ex: "user.id = article.id_user" | ["user.id" => "Article.id_user"]
- $ Fields String | Array Ex: "user.id = article.id_user" | ["user.id" => "Article.id_user"]
- $ key String | Array Ex: "id = 1" | ["id" => 1]
- $ Link String où est $ lien et | Ou | EST
- $ Fields String | Array Ex: "Arnauld" | [2, 3, 5] pour $ opérateur dans | Pas dans
/**
* @param string|array $key
* @param null $operator
* @param null $val
* @return $this
*/
public function whereOr( $ key , $ val = null , $ operator = null , $ escape = true ) /**
* @param $key
* @param array $val
* @return $this
*/
public function whereIn( $ key , array $ val , $ escape = true ) /**
* @param string $str
* @return $this
*/
public function whereRaw( $ str ) /**
* @param $key
* @param array $val
* @return $this
*/
public function whereNotIn( $ key , array $ val , $ escape = true ) /**
* @param string $key
* @return $this
*/
public function whereNotNull( $ key ) /**
* @param string $key
* @return $this
*/
public function whereNull( $ key ) /**
* Adds an ascending sort for a field.
*
* @param string $field Field name
* @return object Self reference
*/
public function asc( $ field ) /**
* Adds an descending sort for a field.
*
* @param string $field Field name
* @return object Self reference
*/
public function desc( $ field ) /**
* Adds fields to order by.
*
* @param string $field Field name
* @param string $direction Sort direction
* @return object Self reference
*/
public function orderBy( $ field , $ direction = ' ASC ' ) /**
* Builds an insert query.
*
* @param array $data Array of key and values to insert
* @return bool
*/
public function insert( array $ data = [])CETTE MÉTHODE DOIT ÊTRE
/**
* Builds an update query.
*
* @param array $data Array of keys and values, or string literal
* @return bool
*/
public function update( $ data ) /**
* Builds a delete query.
*
* @param string|int|array $where Where conditions
* @return bool
*/
public function delete( $ where = null )Si $ RAW_SQL EST NULL, LA MÉTHODE RETOURNE UNE CHARE DE CARACTRES, RETOURNE $ This Sinon.
/**
* Gets or sets the SQL statement.
*
* @param string|array SQL statement
* @return self|string SQL statement
*/
public function sql( $ sql = null ) /**
* Saves an object to the database.
*
* @param object $objet Class instance
* @param array $db_fields Select database fields to save (insert or update)
* @return boolean
*/
public function save( $ objet = null , array $ db_fields = null ) /**
* Removes an object from the database.
*
* @param object
* @return boolean
*/
public function remove( $ objet = null )Remarque: Si tu as décéré utilisé un framework Commeigniter 4 tu aimitriseras vite Autres Méthodes groupby, ayant, limite, offset, distinct, entre, select, dernier, find, min, count, max, avg, one, premier et des Méthodes dynamiques comme premier {champ}, lasty {field}, findby {field} tableau.
/**
* Gets the database connection instance PDO.
*
* @return object Database connection
*/
public function getDb() /**
* Executes a sql statement.
*
* @return object Query results object
* @throws Exception When database is not defined
*/
public function execute( array $ params = []) /**
* Perform a query
*
* @param string $select
* @param array|string $where
* @param int $limit
* @param int $offset
* @return array - of object class
*/
public function get( $ select = " * " , $ where = null , $ limit = null , $ offset = null ) # Autres Méthodes
==================
/**
* Get the table name for this ER class.
*
* @access public
* @return string
*/
getTable ()
/**
* Get the primaryKey
*
* @access public
* @return string
*/
getPrimaryKey()
/**
* Get model property fields by data table.
*
* @access public
* @return array of available columns
*/
getFields ()
/**
* Create new data row.
*
* @access public
* @param array $properties
* @return object Model instance
* @return bool
*/
create (Array $ properties )
/**
* Find one model in the database.
* or create if not exists.
*
* @access public
* @param array $properties
* @return object Model instance
* @return array|bool if error occured
*/
findOrCreate (Array $ properties = null )
/**
* Find all model in the database.
*
* @access public
* @param mixed $where
* @return array|object
*/
public static function all( $ where = null ) <?php
namespace App Controller ;
use App Model Contact ;
class Home extends BaseController{
public function index (){
// Retrouve la méthod utilisée | HTTP Verb
if ( $ this -> request -> method () === ' post ' ){
// retrouve un fichier | retrouve uploaded file
$ image = $ this -> request -> file ( ' image ' );
// save
$ image -> save ();
// get the name of the moved file
echo $ image -> name ;
}
// Using model Contact
// all() est la seule méthode statique | all() is the only static method
$ contacts = Contact:: all ();
$ contacts = ( new Contact ())-> get ());
// Afficher la vue | display the vue
return $ this -> view ( " accueil " , [
" titre " => " Accueil "
]);
}
}
Paginateur Iranianpep / Paginator
Former des pdscopes de validateur / PHP-form-validator
PHP Arrays PdScopes / PHP-arrays
PHP CLI par Adhocore Adhocore / PHP-CLI
Copyright (C) 2021, Faustfizz [email protected] Tous droits réservés.
La redistribution et l'utilisation dans les formulaires source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient remplies:
Les redistributions du code source doivent conserver l'avis de droit d'auteur ci-dessus, cette liste de conditions et l'avertissement suivant.
Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante dans la documentation et / ou d'autres documents fournis avec la distribution.
Ni le nom du titulaire du droit d'auteur ni les noms de ses contributeurs ne peuvent être utilisés pour approuver ou promouvoir des produits dérivés de ce logiciel sans autorisation écrite préalable spécifique.
Ce logiciel est fourni par les détenteurs de droits d'auteur et les contributeurs "tels quels" et toutes les garanties expresses ou implicites, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande et d'adéquation à un usage particulier sont déclinées. En aucun cas, le titulaire ou les contributeurs du droit d'auteur ne sera pas responsable de tout dommage directement, indirect, accessoire, spécial, exemplaire ou consécutif (y compris, mais sans interruption commerciale) Si vous êtes conseillé de la possibilité de tels dégâts.