From 01fe13cc4283114debcbce5494ac5a06237667de Mon Sep 17 00:00:00 2001 From: fadrian06 Date: Wed, 3 Jan 2024 19:04:40 -0400 Subject: [PATCH] Fixed some README references --- .editorconfig | 5 +- README.md | 149 ++++++++++++++++++++++++++++---------------------- VERSION | 1 - 3 files changed, 84 insertions(+), 71 deletions(-) delete mode 100644 VERSION diff --git a/.editorconfig b/.editorconfig index e8d15f4..c6c8b36 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,11 +2,8 @@ root = true [*] indent_style = space -indent_size = 4 +indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true - -[*.md] -indent_size = 2 diff --git a/README.md b/README.md index db211b3..a8cef90 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -![](https://user-images.githubusercontent.com/104888/50957476-9c4acb80-14be-11e9-88ce-6447364dc1bb.png) -![](https://img.shields.io/badge/PHPStan-level%206-brightgreen.svg?style=flat) -![](https://img.shields.io/matrix/flight-php-framework%3Amatrix.org?server_fqdn=matrix.org&style=social&logo=matrix) -[![HitCount](https://hits.dwyl.com/flightphp/core.svg?style=flat-square&show=unique)](http://hits.dwyl.com/flightphp/core) +![PHPStan: enabled](https://user-images.githubusercontent.com/104888/50957476-9c4acb80-14be-11e9-88ce-6447364dc1bb.png) +![PHPStan: level 6](https://img.shields.io/badge/PHPStan-level%206-brightgreen.svg?style=flat) +![Matrix](https://img.shields.io/matrix/flight-php-framework%3Amatrix.org?server_fqdn=matrix.org&style=social&logo=matrix) +[![Hit Count](https://hits.dwyl.com/flightphp/core.svg?style=flat-square&show=unique)](http://hits.dwyl.com/flightphp/core) # What is Flight? @@ -11,12 +11,12 @@ quickly and easily build RESTful web applications. Chat with us on Matrix IRC [#flight-php-framework:matrix.org](https://matrix.to/#/#flight-php-framework:matrix.org) # Basic Usage -```php +```php // if installed with composer require 'vendor/autoload.php'; // or if installed manually by zip file -//require 'flight/Flight.php'; +// require 'flight/Flight.php'; Flight::route('/', function() { echo 'hello world!'; @@ -37,19 +37,19 @@ Flight is released under the [MIT](http://flightphp.com/license) license. # Installation -1\. Download the files. +**1\. Download the files.** -If you're using [Composer](https://getcomposer.org/), you can run the following +If you're using [Composer](https://getcomposer.org), you can run the following command: ```bash -composer require n0nag0n/flight +composer require flightphp/core ``` -OR you can [download](https://github.com/n0nag0n/flight/archive/master.zip) +OR you can [download](https://github.com/flightphp/core/archive/master.zip) them directly and extract them to your web directory. -2\. Configure your webserver. +**2\. Configure your webserver.** For *Apache*, edit your `.htaccess` file with the following: @@ -60,19 +60,26 @@ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] ``` -**Note**: If you need to use flight in a subdirectory add the line -`RewriteBase /subdir/` just after `RewriteEngine On`. +> **Note**: If you need to use flight in a subdirectory add the line +> `RewriteBase /subdir/` just after `RewriteEngine On`. +> **Note**: If you want to protect all server files, like a db or env file. +> Put this in your `.htaccess` file: + +``` +RewriteEngine On +RewriteRule ^(.*)$ index.php +``` For *Nginx*, add the following to your server declaration: ``` server { location / { - try_files $uri $uri/ /index.php; + try_files $uri $uri/ /index.php; } } ``` -3\. Create your `index.php` file. +**3\. Create your `index.php` file.** First include the framework. @@ -124,31 +131,32 @@ Or a class method: ```php class Greeting { - public static function hello() { + static function hello() { echo 'hello world!'; } } -Flight::route('/', array('Greeting', 'hello')); +Flight::route('/', [Greeting::class, 'hello']); ``` Or an object method: ```php -class Greeting -{ - public function __construct() { +class Greeting { + private $name; + + function __construct() { $this->name = 'John Doe'; } - public function hello() { - echo "Hello, {$this->name}!"; + function hello() { + echo "Hello, $this->name!"; } } -$greeting = new Greeting(); +$greeting = new Greeting; -Flight::route('/', array($greeting, 'hello')); +Flight::route('/', [$greeting, 'hello']); ``` Routes are matched in the order they are defined. The first route to match a @@ -193,7 +201,7 @@ You can specify named parameters in your routes which will be passed along to your callback function. ```php -Flight::route('/@name/@id', function(string $name, string $id) { +Flight::route('/@name/@id', function (string $name, string $id) { echo "hello, $name ($id)!"; }); ``` @@ -202,7 +210,7 @@ You can also include regular expressions with your named parameters by using the `:` delimiter: ```php -Flight::route('/@name/@id:[0-9]{3}', function(string $name, string $id) { +Flight::route('/@name/@id:[0-9]{3}', function (string $name, string $id) { // This will match /bob/123 // But will not match /bob/12345 }); @@ -257,7 +265,7 @@ your callback function. ```php Flight::route('/user/@name', function (string $name) { // Check some condition - if ($name != "Bob") { + if ($name !== "Bob") { // Continue to next route return true; } @@ -303,7 +311,7 @@ To map your own custom method, you use the `map` function: ```php // Map your method -Flight::map('hello', function ($name) { +Flight::map('hello', function (string $name) { echo "hello $name!"; }); @@ -317,7 +325,7 @@ To register your own class, you use the `register` function: ```php // Register your class -Flight::register('user', 'User'); +Flight::register('user', User::class); // Get an instance of your class $user = Flight::user(); @@ -330,7 +338,7 @@ Here's an example of loading a database connection: ```php // Register class with constructor parameters -Flight::register('db', 'PDO', array('mysql:host=localhost;dbname=test','user','pass')); +Flight::register('db', PDO::class, ['mysql:host=localhost;dbname=test', 'user', 'pass']); // Get an instance of your class // This will create an object with the defined parameters @@ -346,9 +354,14 @@ new object. The callback function takes one parameter, an instance of the new ob ```php // The callback will be passed the object that was constructed -Flight::register('db', 'PDO', array('mysql:host=localhost;dbname=test','user','pass'), function (PDO $db): void { - $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -}); +Flight::register( + 'db', + PDO::class, + ['mysql:host=localhost;dbname=test', 'user', 'pass'], + function (PDO $db) { + $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + } +); ``` By default, every time you load your class you will get a shared instance. @@ -375,7 +388,7 @@ method which sends a generic `HTTP 404` response. You can override this behavior by using the `map` method: ```php -Flight::map('notFound', function(){ +Flight::map('notFound', function() { // Display custom 404 page include 'errors/404.html'; }); @@ -386,7 +399,7 @@ For example you can replace the default Router class with your own custom class: ```php // Register your custom class -Flight::register('router', 'MyRouter'); +Flight::register('router', MyRouter::class); // When Flight loads the Router instance, it will load your class $myrouter = Flight::router(); @@ -404,7 +417,7 @@ methods as well as any custom methods that you've mapped. A filter function looks like this: ```php -function (array &$params, string &$output) { +function (array &$params, string &$output): bool { // Filter code } ``` @@ -414,7 +427,7 @@ Using the passed in variables you can manipulate the input parameters and/or the You can have a filter run before a method by doing: ```php -Flight::before('start', function (array &$params, string &$output) { +Flight::before('start', function (array &$params, string &$output): bool { // Do something }); ``` @@ -422,7 +435,7 @@ Flight::before('start', function (array &$params, string &$output) { You can have a filter run after a method by doing: ```php -Flight::after('start', function (array &$params, string &$output) { +Flight::after('start', function (array &$params, string &$output): bool { // Do something }); ``` @@ -434,20 +447,22 @@ Here's an example of the filtering process: ```php // Map a custom method -Flight::map('hello', function ($name) { +Flight::map('hello', function (string $name) { return "Hello, $name!"; }); // Add a before filter -Flight::before('hello', function (array &$params, string &$output) { +Flight::before('hello', function (array &$params, string &$output): bool { // Manipulate the parameter $params[0] = 'Fred'; + return true; }); // Add an after filter -Flight::after('hello', function (array &$params, string &$output) { +Flight::after('hello', function (array &$params, string &$output): bool { // Manipulate the output $output .= " Have a nice day!"; + return true; }); // Invoke the custom method @@ -464,8 +479,9 @@ If you have defined multiple filters, you can break the chain by returning `fals in any of your filter functions: ```php -Flight::before('start', function (array &$params, string &$output){ +Flight::before('start', function (array &$params, string &$output): bool { echo 'one'; + return true; }); Flight::before('start', function (array &$params, string &$output): bool { @@ -476,8 +492,9 @@ Flight::before('start', function (array &$params, string &$output): bool { }); // This will not get called -Flight::before('start', function (array &$params, string &$output){ +Flight::before('start', function (array &$params, string &$output): bool { echo 'three'; + return true; }); ``` @@ -526,7 +543,7 @@ template call the `render` method with the name of the template file and optiona template data: ```php -Flight::render('hello.php', array('name' => 'Bob')); +Flight::render('hello.php', ['name' => 'Bob']); ``` The template data you pass in is automatically injected into the template and can @@ -534,7 +551,7 @@ be reference like a local variable. Template files are simply PHP files. If the content of the `hello.php` template file is: ```php -Hello, ! +Hello, ! ``` The output would be: @@ -572,15 +589,15 @@ content. To render content to be used in a layout, you can pass in an optional parameter to the `render` method. ```php -Flight::render('header', array('heading' => 'Hello'), 'header_content'); -Flight::render('body', array('body' => 'World'), 'body_content'); +Flight::render('header', ['heading' => 'Hello'], 'headerContent'); +Flight::render('body', ['body' => 'World'], 'bodyContent'); ``` -Your view will then have saved variables called `header_content` and `body_content`. +Your view will then have saved variables called `headerContent` and `bodyContent`. You can then render your layout by doing: ```php -Flight::render('layout', array('title' => 'Home Page')); +Flight::render('layout', ['title' => 'Home Page']); ``` If the template files looks like this: @@ -588,13 +605,13 @@ If the template files looks like this: `header.php`: ```php -

+

``` `body.php`: ```php -
+
``` `layout.php`: @@ -602,11 +619,11 @@ If the template files looks like this: ```php - <?php echo $title; ?> + <?= $title ?> - - + + ``` @@ -636,11 +653,11 @@ require './Smarty/libs/Smarty.class.php'; // Register Smarty as the view class // Also pass a callback function to configure Smarty on load -Flight::register('view', 'Smarty', array(), function (Smarty $smarty) { - $smarty->setTemplateDir() = './templates/'; - $smarty->setCompileDir() = './templates_c/'; - $smarty->setConfigDir() = './config/'; - $smarty->setCacheDir() = './cache/'; +Flight::register('view', Smarty::class, [], function (Smarty $smarty) { + $smarty->setTemplateDir('./templates/'); + $smarty->setCompileDir('./templates_c/'); + $smarty->setConfigDir('./config/'); + $smarty->setCacheDir('./cache/'); }); // Assign template data @@ -653,7 +670,7 @@ Flight::view()->display('hello.tpl'); For completeness, you should also override Flight's default render method: ```php -Flight::map('render', function($template, $data){ +Flight::map('render', function(string $template, array $data): void { Flight::view()->assign($data); Flight::view()->display($template); }); @@ -669,9 +686,9 @@ response with some error information. You can override this behavior for your own needs: ```php -Flight::map('error', function(Throwable $ex){ +Flight::map('error', function (Throwable $error) { // Handle error - echo $ex->getTraceAsString(); + echo $error->getTraceAsString(); }); ``` @@ -837,19 +854,19 @@ Flight provides support for sending JSON and JSONP responses. To send a JSON res pass some data to be JSON encoded: ```php -Flight::json(array('id' => 123)); +Flight::json(['id' => 123]); ``` For JSONP requests you, can optionally pass in the query parameter name you are using to define your callback function: ```php -Flight::jsonp(array('id' => 123), 'q'); +Flight::jsonp(['id' => 123], 'q'); ``` So, when making a GET request using `?q=my_func`, you should receive the output: -``` +```javascript my_func({"id":123}); ``` @@ -906,7 +923,7 @@ Flight::halt(int $code = 200, string $message = '') // Stop the framework with a Flight::route(string $pattern, callable $callback, bool $pass_route = false) // Maps a URL pattern to a callback. Flight::redirect(string $url, int $code) // Redirects to another URL. Flight::render(string $file, array $data, ?string $key = null) // Renders a template file. -Flight::error(Throwable $exception) // Sends an HTTP 500 response. +Flight::error(Throwable $error) // Sends an HTTP 500 response. Flight::notFound() // Sends an HTTP 404 response. Flight::etag(string $id, string $type = 'string') // Performs ETag HTTP caching. Flight::lastModified(int $time) // Performs last modified HTTP caching. diff --git a/VERSION b/VERSION deleted file mode 100644 index 4a36342..0000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.0.0