
Ein reichhaltiges leichter PHP -MVC -Framework: Leichtes PHP -MVC:
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 konzentrieren sich hauptsächlich auf Geschwindigkeit und minimalistisch. Es ist 250 KB Reißverschluss , 148 kb xz . Es rendert mit 0,001 Sekunden (ich habe eine PHP 8.0.7 -Umgebung verwendet, um sie zu schreiben und zu testen).
Mein Ziel ist es, eine Sache zu tun, die ich die erste Person bin, die es mit Leichtigkeit benutzt. Ich habe einige Funktionen hinzugefügt, die mir helfen, schneller an meiner All -Tagen -Arbeit zu arbeiten.
Yo! Sie können dies direkt herunterladen und ohne externe Abhängigkeit verwenden. Es unterstützt Komponisten -Bibliotheken, aber ich habe noch keinen Packagisten veröffentlicht.
Also brauchst du:
Im Moment habe ich nur Generatorenbefehle hinzugefügt
Hilfe zeigen:
nuka@hacker_pc: ~ $ php footup Um Controller zu generieren:
nuka@hacker_pc: ~ $ php footup controller controllerNameSei nicht so schüchtern, versuche dich selbst
Die Anfrage und die Router -Klasse sind die BMW -Motoren, die sie viele hilfreich halten. Hier verwenden wir die Anfrage:
// 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()Dies ist eine gemeinsame Klasse, sodass die Daten mit dem gleichen Daten bleiben. Hier ist das Beispiel:
// 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 shownWenn Sie Daten mit Validator validieren, gibt die Validierungsfunktion true zurück, wenn alle übergeben und sonst falsch falsch sind
// 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] ' ));
. . . . . . . . . . . . . . . . . . . . . . . . . .
request ($ 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 )CALLE CONTROLLER ($ WithNameSpace = true)
/**
* Retrouve le controlleur en cours d'utilisation
*
* @param boolean $withNamespace
* @return string
*/
calledController ( $ withNamespace = true )Method () genannt
/**
* Retrouve la méthode couremment utilisée
*
* method of the current called controller
*
* @return string
*/
calledMethod ()Und viele Mores Other Globals Funktionen
#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 ();Verwenden Sie $ reset = false si Vous ne Souhaiter Pas Repecencer une Requête. Verwenden Sie $ table Pour Changer de Table (Cette Méthode Vous l'Itiliserez Seltenheit)
- $ type doit être un dans ['innere', 'links äußere', 'rechte äußere', 'volle äußere']
- $ 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 Zeichenfolge | Array ex: "id = 1" | ["id" => 1]
- $ link String, wobei $ link ist und | Oder | IST
- $ Fields String | Array Ex: "Arnauld" | [2, 3, 5] Für $ Operator in | Nicht in
/**
* @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 utilisée après une Klausel wo
/**
* 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 chaine de caractères, 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 )NOTE: Si tu as déjà utilisé un framework comme CodeIgniter 4 tu maitriseras vite Autres méthodes groupBy, having, limit, offset, distinct, between, select, last, find, min, count, max, avg, one, first et des méthodes dynamiques comme firstBy{Field}, lastBy{Field}, findBy{Field} où {Field} est un Attribut de la Tabelle.
/**
* 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 "
]);
}
}
Paginator Iranianpep/Paginator
Formular Validator PDSCopes/PHP-Form-Validator
PHP-Arrays PDSCOPES/PHP-Arrays
PHP CLI von Adhocore Adhocore/PHP-CLI
Copyright (c) 2021, Faustfizz [email protected] Alle Rechte vorbehalten.
Umverteilung und Verwendung in Quellen- und Binärformen mit oder ohne Modifikation sind zulässig, sofern die folgenden Bedingungen erfüllt sind:
Umverteilungen des Quellcode müssen die oben genannte Copyright -Mitteilung, diese Liste der Bedingungen und den folgenden Haftungsausschluss behalten.
Umverteilungen in binärer Form müssen die oben genannte Copyright -Mitteilung, diese Liste der Bedingungen und den folgenden Haftungsausschluss in der Dokumentation und/oder anderen mit der Verteilung bereitgestellten Materialien reproduzieren.
Weder der Name des Urheberrechtsinhabers noch die Namen seiner Mitwirkenden dürfen verwendet werden, um Produkte zu unterstützen oder zu fördern, die von dieser Software ohne spezifische schriftliche Genehmigung abgeleitet wurden.
Diese Software wird von den Inhabern und Mitwirkenden des Urheberrechts "wie sie" bereitgestellt, und alle ausdrücklichen oder impliziten Garantien, einschließlich, aber nicht beschränkt auf die impliziten Garantien für Handelsfähigkeit und Eignung für einen bestimmten Zweck, werden abgelehnt. In keinem Fall haftet der Urheberrechtsinhaber oder die Mitwirkenden für direkte, indirekte, zufällige, besondere, beispielhafte oder Folgeschäden (einschließlich, aber nicht beschränkt auf die Beschaffung von Ersatzgütern oder -dienstleistungen; Verlust des Verlusts des Verwendungsverlusts, Daten oder Gewinne; Gewinne oder geschäftliche Unterbrechung). Beraten über die Möglichkeit eines solchen Schadens.