Download the PHP package tina4stack/tina4php without Composer
On this page you can find all versions of the php package tina4stack/tina4php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package tina4php
Tina4 is a light-weight routing and twig based templating system which allows you to write websites and API applications very quickly. Currently, the full deployment is under 8mb in size, and we are aiming at being the PHP framework with the smallest carbon footprint. Due to the nature of the code being very compact and all functionality engineered from the ground up we trust you will find it a pleasant experience.
Join us on Discord to be part of the journey.
The premise of the project is to make you the developer and PHP, the heroes!
Installing
We are currently testing on latest PHP 8.2, please report any issues you may find.
- Install PHP7.4 > make sure the following extensions are enabled: fileinfo, mbstring, curl, gd, xml.
- Install Composer * Windows users must install openssl so that the JWT keys will be generated correctly
- Create a project folder where you want to work
- In your project folder terminal / console
Install with composer from terminal
Begin your Tina4 project using
Spin up a web server with PHP in your terminal in the project folder
`
Hit up http://localhost:7145 in your browser, you should see the documentation page
If you want to run the webservice on a specific port
Database support
The ORM and database modules are all extracted into their own packagist modules. The ORM and database metadata work now using a more uniform mechanism. The service module now is created under bin and tina4 service and tina4 bin executables are replaced when their checksums change.
Database support table
Database | Composer Command |
---|---|
Sqlite3 | |
ODBC | |
MySQL | |
Firebird | |
MongoDB | |
PostgreSQL | |
MSSQL | |
PDO |
Features
- Auto templating with TWIG
- Auto inclusions & project structure
- Open API Annotations for quick Swagger documentation & security
- Annotation driven testing, write unit tests as you code
- Tina4 ORM
- Service Runner
- Async triggers and events
- Out of the box support for Swoole
- Modular programming, each project is a potential module.
Run tests
Start service
Tina4 menu
Note The above command only seems to run on Linux and Mac
On Windows do the following:
Working with Docker
This requires you to have your docker environment already running
We assume /app is the internal path for the current project Installing
Upgrading
Running
On a different port like 8080 for example
Quick Reference
The folder layout is as follows and can be overridden by defining PHP constants for , & :
- src
- app (helpers, PHP classes)
- public (system twig files, images, css, js)
- orm (ORM objects - extend \Tina4\ORM)
- routes (routing)
- scss - style sheet templates
- services (service processes - extend \Tina4\Process)
- templates (app twig files)
.Env Configuration
Tina4 uses a .env file to set up project constants, a .env will be created for you when the system runs for the first time. If you specify an environment variable on your OS called ENVIRONMENT then .env.ENVIRONMENT will be loaded instead.
Do not include your .env files with your project if they contain sensitive information like password, instead create an example of how it should look.
Example of Routing
Creating API end points and routers in Tina4 is simple as indicated below. If you are adding swagger annotations, simply hit up the /swagger end point to see the OpenApi rendering.
Routes can also be mapped to class methods, static methods are preferred for routing, but you can mix and match for example if you want to keep all functionality neatly together.
Example.php
Example of a database connection to SQLite3
You can add lines like this by using the tina4 tool or by pasting the example below into your index.php file.
Example of ORM Objects in relationship
`
And some code using the above objects
Run tests from the command line
Give this a try and see what happens
Writing unit tests is easy and can be done as an annotation in your code comments
Triggers and Events
Tina4Php supports a very limited threading or triggering of events using popen to execute and "thread" out triggered code. There are some caveats as the code cannot have comments in and only simple variables can be used. Other than that almost anything can be accomplished.
Example of a trigger and it firing:
Here the trigger is fired on 2 routes, hit each one up in your browser to see the output in the event.log
The output to the event.log file should happen asynchronously whilst the routes return back immediately to the user browsing.
Triggering deployments using git web hooks
There is a built-in path that will trigger a deployment from a github webhook on your system
This requires the following to be in your .env to work; and you will need to generate a secret to be shared between the systems. Additionally, you can specify directories from your repository to be included in your deployment with Make sure you give permissions to git on the system you deploy to if you work with a private repository.
PhpDocs
Building the docker
Deploy the docker
Jquery validate cheat sheet
https://gist.github.com/rhacker/3550309
Todo
- Add health check
- Add GUID for each request, flow through to the rest of the code
If homebrew breaks after running a pecl install ext for some reason - zsh: killed php
PHP info
Example of a PHP info route if needed.
MacOS extensions for PHP
Example installing IMAP extension
All versions of tina4php with dependencies
nowakowskir/php-jwt Version ^2.0.1
twig/twig Version ^3.3.8
phpfastcache/phpfastcache Version ^8.0.5
coyl/git Version ^0.1.7
scssphp/scssphp Version ^1.5.2
tina4stack/tina4php-debug Version ^2.0
tina4stack/tina4php-shape Version ^2.0
tina4stack/tina4php-env Version ^2.0
tina4stack/tina4php-database Version ^2.0
tina4stack/tina4php-orm Version ^2.0
ext-openssl Version *
ext-libxml Version *
ext-json Version *
ext-curl Version *
ext-fileinfo Version *
tina4stack/tina4php-core Version ^2.0