Download the PHP package inphinit/teeny without Composer
On this page you can find all versions of the php package inphinit/teeny. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package teeny
Teeny route system for PHP
Teeny is a micro-route system that is really micro, supports PHP 5.3 to PHP 8, is extremely simple and ready to use.
Install using composer
For create your project use:
Replace <project name>
by your project name, for exemple, if want create your project with "blog" name (folder name), use:
Download without composer
If is not using composer
try direct download from https://github.com/inphinit/teeny/releases
Apache (.htaccess
)
The .htaccess
will only need some adjustment if you are using it in a subfolder, you will need to change all ErrorDocument
. See more details in https://httpd.apache.org/docs/2.4/custom-error.html.
If the address is something like https://<domain>/
, then do:
If the address is something like https://<domain>/foo/
, then do:
If the address is something like https://<domain>/foo/bar/
, then do:
NGINX
For NGINX you can use try_files
in Nginx. See a example:
Note: For FPM use
fastcgi_pass unix:/var/run/php/php<version>-fpm.sock
(replace<version>
by PHP version in your server)
Built-in web server
You can use built-in server to facilitate the development, Teeny provides the relative static files, which will facilitate the use, example of use (navigate to project folder using cd
command):
You can edit the server.bat
(Windows) or server
(Linux or macOS) files to make it easier to start the project with a simple command
Windows (server.bat file)
Configure the server.bat
variables according to your environment:
Once configured, you can navigate to the project folder and run the command that will start built-in server, see an example:
Linux and macOS (server file)
Configure the ./server
variables according to your environment:
Once configured, you can navigate to the project folder and run the command that will start built-in server, see an example:
API
Methods from Teeny
class
Method | Description |
---|---|
Teeny::path(): string |
Get current path from URL (ignores subfolders if it is located in a subfolder on your webserver) |
Teeny::status([int $code]): int |
Get or set HTTP status code |
Teeny::action($methods, string $path, mixed $callback): void |
Register a callback or script for a route |
Teeny::setPattern(string $pattern, string $regex): void |
Add or replace a pattern for custom routes, like /foo/<variable1:pattern> |
Teeny::handlerCodes(array $codes, mixed $callback): int |
Handler HTTP status code |
Teeny::exec(): bool |
Execute application |
Add and remove routes
For create a new route in index.php
put like this:
You can use return
:
For remove a route use null
value, like this:
Route include file
For include a file uses like this:
If foo/bar/test.php
not found in project will display the following error:
HTTP status
For retrieve HTTP status from SAPI (Apache, Ngnix, IIS) or previously defined in the script itself use like this:
For retrieve into a route use like this:
For set a new HTTP status use like this (eg.: emit 404 Not Found):
For set into route use like this (a example with condition/if):
Named params in route
You can use params like this:
If access a URL like this http://mywebsite/user/mary
returns:
Another example:
If access a URL like this http://mywebsite/article/mary-1000
returns:
Supported types for named parameters in routes
An example, only numeric id are valids:
Type | Example | Description |
---|---|---|
alnum |
$app->action('GET', '/baz/<video:alnum>', ...); |
Only accepts parameters with alpha-numeric format and $params returns array( video => ...) |
alpha |
$app->action('GET', '/foo/bar/<name:alpha>', ...); |
Only accepts parameters with alpha format and $params returns array( name => ...) |
decimal |
$app->action('GET', '/baz/<price:decimal>', ...); |
Only accepts parameters with decimal format and $params returns array( price => ...) |
num |
$app->action('GET', '/foo/<id:num>', ...); |
Only accepts parameters with integer format and $params returns array( id => ...) |
nospace |
$app->action('GET', '/foo/<nospace:nospace>', ...); |
Accepts any characters expcet spaces, like white-spaces (%20 ), tabs (%0A ) and others (see about \S in regex) |
uuid |
$app->action('GET', '/bar/<barcode:alnum>', ...); |
Only accepts parameters with uuid format and $params returns array( barcode => ...) |
version |
$app->action('GET', '/baz/<api:version>', ...); |
Only accepts parameters with semversion (v2) format and $params returns array( api => ...) |
For add new patterns use like this Teeny::setPattern()
, examples:
And for access this route exemple use http://mysite/test/A00001
or http://mysite/test/C02
, start with upper-case letter and after width a integer number
Dealing with large files
To work with large files you can choose to use the following server modules:
Module | Server | Documentation |
---|---|---|
X-Sendfile |
Apache | https://tn123.org/mod_xsendfile/ |
X-Accel-Redirect |
NGINX | https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/ |
X-LIGHTTPD-send-file and X-Sendfile2 |
Lighttpd | https://redmine.lighttpd.net/projects/1/wiki/X-LIGHTTPD-send-file |
A simple implementation:
Serving public files (and scripts)
To serve public files (or scripts) you must add them to the public folder. The prefix /public/*
will not be displayed in the URL, for example, if there is a file like public/foobar.html
, then the user will simply access the address https://<domain>/foobar.html
.
Subfolders will also work, if it has a file like public/foo/bar/baz/video.webm
then the user should go to https://<domain>/foo/bar/baz/video.webm
.
You can add PHP scripts, and they will be executed normally, if you have a script like public/sample/helloworld.php
, just access https://<domain>/sample/helloworld.php
If you want to make a blog available, such as Wordpress, you must also place it inside the folder, an example of structure:
And then just access https://<domain>/blog/
. Other samples:
https://<domain>/blog/wp-admin/
https://<domain>/blog/2021/03/24/astronomy-messier-87-black-hole/
https://<domain>/blog/2023/04/17/researchers-discover-small-galaxy/
If you need more features you can experience the Inphinit PHP framework: https://inphinit.github.io/