
丰富的轻型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
踏板MVC框架主要集中在速度和极简主义上。它是250 kb的拉链, 148 kb xz 。它以0.001秒的形式渲染(我使用了PHP 8.0.7环境来编写和测试)。
我的目标是做一个我是第一个轻松使用它的人。我添加了一些功能,可以帮助我更快地工作。
哟!您可以直接下载并使用它,而无需外部依赖。它支持作曲家图书馆,但我尚未向Packagist发表Potep 。
所以你需要:
现在我只添加了生成器命令
显示帮助:
nuka@hacker_pc: ~ $ php footup 生成控制器:
nuka@hacker_pc: ~ $ php footup controller controllerName不要那么害羞,请尝试自己
请求和路由器类是他们拥有许多东西的宝马电动机。在这里我们如何使用请求:
// 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()这是一个共享类,因此与其保持相同的数据,这是一个示例:
// 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 shown如果您使用验证器验证数据,则验证函数如果全部传递,则返回true ,否则否则
// 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] ' ));
. . . . . . . . . . . . . . . . . . . . . . . . . .
请求($ 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 )称为controller($ withnamespace = true)
/**
* Retrouve le controlleur en cours d'utilisation
*
* @param boolean $withNamespace
* @return string
*/
calledController ( $ withNamespace = true )称为method()
/**
* Retrouve la méthode couremment utilisée
*
* method of the current called controller
*
* @return string
*/
calledMethod ()还有许多其他全球功能
#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 ();利用$ reset = false si vous ne souhaiter pas plasemencer unerequête。利用$ table Pour Changer de Table(CetteMéthodeVous L'Utiliserez Rarement)
- $ type doitêtreun dans ['inner','左外','右外','full ofer']
- $ fields字符串|阵列ex:“ user.id = article.id_user” | [“ user.id” =>“ article.id_user”]
- $ fields字符串|阵列ex:“ user.id = article.id_user” | [“ user.id” =>“ article.id_user”]
- $ fields字符串|阵列ex:“ user.id = article.id_user” | [“ user.id” =>“ article.id_user”]
- $键字符串|数组ex:“ id = 1” | [“ ID” => 1]
- $链接字符串,$ link是和|或|是
- $ fields字符串|数组ex:“ arnauld” | [2,3,5]对于$ ocerator 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 = [])cetteméthodedoitêtreuttreutiriséeprèsune条款
/**
* 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,laMéthodeRetourneune une teCaractè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桌子。
/**
* 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 "
]);
}
}
司机伊朗/皇家骑士
形成验证器PDSCOPES/PHP形式胶合体
PHP阵列PDSCOPES/PHP阵列
Adhocore Adhocore/PHP-CLI的PHP CLI
版权(c)2021,faustfizz [email protected]保留所有权利。
如果满足以下条件:
源代码的再分配必须保留上述版权通知,此条件列表和以下免责声明。
二进制形式的重新分配必须复制上述版权通知,此条件列表以及文档和/或分发提供的其他材料中的以下免责声明。
未经具体的事先书面许可,版权持有人的名称和贡献者的名称都不能用于认可或推广从该软件中获得的产品。
该软件由版权所有者和贡献者“按原样”提供,任何明示或暗示的保证,包括但不限于对适销性和特定目的适合性的隐含保证。在任何情况下,版权持有人或贡献者均不得对任何直接,间接,偶然,特殊,特殊,示例性或结果损害均承担任何责任(包括但不限于替代商品或服务的采购,损失,数据或利润损失,数据或利润;还是造成的,无论是在合同中造成的,或者在任何责任中造成的责任,或者是否有任何责任,或者在任何责任中,是否有任何责任,或者是否有任何责任,或者是否有责任,是否有责任,是否有责任。告知可能造成这种损害的可能性。