jacksleight / coast
Web application framework for PHP
Requires
- php: >=7.1.0
- jakeasmith/http_build_url: 0.1.*
Requires (Dev)
Suggests
- intervention/image: required to use Coast\App\Image
- jacksleight/coast-doctrine: for integration with Doctrine ORM
- dev-master
- dev-dev
- 0.8.13
- 0.8.12
- 0.8.11
- 0.8.10
- 0.8.9
- 0.8.8
- 0.8.7
- 0.8.6
- 0.8.5
- 0.8.4
- 0.8.3
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.9
- 0.7.8
- 0.7.7
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.0
- v0.1.0-alpha2
- v0.1.0-alpha1
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
This package is auto-updated.
Last update: 2024-10-18 13:32:32 UTC
README
Coast is a web application framework. The goal of Coast is to provide a simple, lightweight and flexible framework for building high-performance, modern web apps. Some parts of the API were inspired by the Connect and Express node.js frameworks, others are my own (possibly ridiculous) ideas.
All feedback, suggestions, bug reports and contributions are very welcome. Please feel free to get in touch by email (jacksleight at gmail dot com) or @jacksleight on Twitter.
The documentation, examples and tests are still a work in progress (sorry). Until there's a 1.0 release any new version may introduce backwards compatibility breaks.
Components
All components are designed to be as standalone as possible and can generally be used independently. Many implement App\Executable
for use as middleware in applications, these are marked with a ★.
- Acl
- Access control list
- App, Request, Response ★
- Simple Express inspired application logic
- HTTP request and response data handling
- Lazy loading of application dependencies
- Sub-applications
- Config
- Load and merge config files into config object
- Controller ★
- Request controller
- Csp ★
- Content security policy header generation
- Generation of nonce values
- Csrf ★
- Cross site request forgery protection
- Feed
- ATOM feed generation
- Filter
- Data filtering
- Http
- HTTP client (based on cURL)
- Image ★
- Image manipulation
- Requires intervention/image
- Lazy ★
- Lazy load files/closures on demand
- Model, Collection
- Base entity and entity collection classs
- Works with Filter, Transformer, Validator
- Path, Dir, File
- Path, directory and file manipulation
- Resolver
- Resolves strings, files, routes etc. into URLs
- Router ★
- Path and method routing
- Session ★
- Session management and data wrapper
- Sitemap
- XML sitemap generation
- Transformer
- Data transformation
- Url
- URL manipulation
- Validator
- Data validation
- View ★
- Powerfull view component
- Child and parent (wrapper) views
- Extensible views
- Output capture
- Xml
- SimpleXML extensions
Installation
The easiest way to install Coast is through Composer, by creating a file called composer.json
containing:
{ "require": { "jacksleight/coast": "dev-master" } }
And then running:
composer.phar install
Hello World
Create a new file called app.php
containing:
<?php use Coast\App; use Coast\Request; use Coast\Response; require __DIR__ . '/vendor/autoload.php'; $app = new App(__DIR__); $app->executable(function(Request $req, Response $res) { return $res->text('Hello World'); }); $app->execute();
Then run:
php -S localhost:8000 app.php
And load it up in the browser at: http://localhost:8000/.
What's happening here?
- Include the Composer autoloader.
- Initialise a
Coast\App
object. - Add middleware to handle the request.
- Call
execute
to run the application.
Documentation
- API Documentation
- Examples (see the test suite for further code examples)
Requirements
- PHP 5.6+
- mod_rewrite (if using Apache)
To Do
- Examples (in progress)
- API documentation (in progress)
- Tests (in progress)
Licence
The MIT License
Copyright 2019 Jack Sleight http://jacksleight.com/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.