Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alash3al/Horus
a minimal event-driven, flexible, portable and micro PHP web application framework
https://github.com/alash3al/Horus
Last synced: 6 days ago
JSON representation
a minimal event-driven, flexible, portable and micro PHP web application framework
- Host: GitHub
- URL: https://github.com/alash3al/Horus
- Owner: alash3al
- Created: 2014-02-03T22:34:28.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-09-27T15:43:47.000Z (about 8 years ago)
- Last Synced: 2024-08-01T08:08:29.537Z (3 months ago)
- Language: PHP
- Homepage: http://alash3al.github.io/Horus/
- Size: 851 KB
- Stars: 58
- Watchers: 14
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Horus 15
Horus 15 is a new light and simple version of Horus Framework .---
# Quick Overview
```php
on("/", function(){
// the first param is an array of key => value
// for the header field => value
// the value may be an array "will be appended"
// the second param "optional" to set the response status code .
$this->header([
"x-powered-by" => "Horus"
], 200);
echo "Hello World";
});```
---
# API Summary
```phptrue,
// Force horus to generate routes with "/index.php/" in urls
// this settings is only if your server doesn't support
// url rewriting
"index" => "/index.php/"
]);// See the following examples for the usage of the router
// handle a request that needs the see "Hello GET" to be displayed
// under only GET method
$app->on("GET /test", function(){
echo "Hello GET";
});
// Display Hello JSON just for a POST request
$app->on("POST /json", function(){
$this->header(["content-type" => "application/json"]);
echo json_encode([
"message" => "Hello JSON"
]);
});// named params ?
$app->on("/post/([a-z]+)/([0-9]+)", function($word, $num){
echo $word . " : " . $num;
});// execute multiple functions/layers ?
// each function will be executed after the previous one is ended
// if a function returned false, the chain will be break,
// the result of each function will be the last param of the next function in the chain .
$app->on("/page/([^/]+)", [
function($page){
echo "layer 1
";
return "test"; // or return false to cancel the execution of the next function
},
function($page, $result){
echo $result;
}
]);
// access the configs
// you can also create/access anything inside horus
// because it extends stdClass and adds __call() to it
$app->configs;// callback
$app->func = function(){
// your can access horus using
// $this from here too !
echo "ok";
};// call it
$app->func();// check whether the request is under https or not
// it will consider the request secure if you forced it
// from the configurations
$app->secure();// i need to get full url for "/assets/css/style.css"
$app->url("/assets/css/style.css");// it will return a url with scheme "http or https" and hostname
// if you want to change the host ?
// also if you want to change the scheme from http to https "secure"
// the last param is for secure or not "https or not"
// the last param will be automatically set for you using
// $app->secure()
$app->url("/assets/css/style.css", "my.domain", false);// but if you want to get a url to an internal route ?
// just change the ->url to ->route
// also you can change the resulting host and scheme "secure or not"
$app->route("/post/", "my.domain", false);// view some html template(s)
$app->view(["tpl.php"], ["var" => "val"]);
$result = $app->view(["tpl.php"], ["var" => "val"], true);// get Horus instance ?
Horus::getInstance();// how about autoloads ?
$app->autoload("./vendor/");
// now play with your libraries !
// or multiples sources:
$app->autoload(["./vendor", "./components"]);// you can create your own object container using horus new stdClass
// or extending it, by default \Horus\App extends it .
$app->obj = new \App\stdClass; // or new \App\stdClass(['k' => 'v']); to import some data
$app->import([...]);
$app->obj->test = function(){
// ...
};
```