darling / roady
A modular Component driven PHP framework.
Requires
- php: ^8.1
- darling/php-darling-dev-tools: ^1.0
- darling/php-file-system-paths: ^1.0
- darling/php-json-storage-utilities: ^1.0
- darling/php-json-utilities: ^1.2
- darling/php-mocking-utilities: ^1.0
- darling/php-reflection-utilities: ^1.1
- darling/php-text-types: ^1.1
- darling/php-unit-test-utilities: ^1.0
- darling/php-web-paths: ^1.0
- darling/roady-module-utilities: ^1.0
- darling/roady-routes: ^1.0
- darling/roady-routing-utilities: ^1.0
- darling/roady-ui-utilities: ^1.0
Requires (Dev)
- dev-Roady
- v2.0.0-beta-4
- v2.0.0-beta-3
- v2.0.0-beta-2
- v2.0.0-beta-1
- v2.0.0-alpha-10
- v2.0.0-alpha-9
- v2.0.0-alpha-8
- v2.0.0-alpha-7
- v2.0.0-alpha-6
- v2.0.0-alpha-5
- v2.0.0-alpha-4
- v2.0.0-alpha-3
- v2.0.0-alpha-2
- v2.0.0-alpha-1
- v2.0.0-alpha-0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.9.9.9-beta
- v0.9.9.8-beta
- v0.9.9.7-beta
- v0.9.9.6-beta
- v0.9.9.5-beta
- v0.9.9.4-beta
- v0.9.9.3-beta
- v0.9.9.2-beta
- v0.9.9.1-beta
- v0.9.9-beta
- v0.9.8-beta
- v0.9.7-beta
- v0.9.6-beta
- v0.9.5-beta
- v0.9.4-beta
- v0.9.3-beta
- v0.9.2-beta
- v0.9.1-beta
- v0.9.0-beta
- v0.8.9-beta
- v0.8.8-beta
- v0.8.7-beta
- v0.8.6-beta
- v0.8.5-beta
- v0.8.4-beta
- v0.8.3-beta
- v0.8.2-beta
- v0.8.1-beta
- v0.8.0-beta
- v0.7.9-beta
- v0.7.8-beta
- v0.7.7-beta
- v0.7.6-beta
- v0.7.5-beta
- v0.7.4-beta
- v0.7.3-beta
- v0.7.2-beta
- v0.7.1-beta
- v0.7.0-beta
- v0.6.9-beta
- v0.6.8-beta
- v0.6.7-beta
- v0.6.6-beta
- v0.6.5-beta
- v0.6.4-beta
- v0.6.3-beta
- v0.6.2-beta
- v0.6.1-beta
- v0.6.0-beta
- v0.5.9-beta
- v0.5.8-beta
- v0.5.7-beta
- v0.5.6-beta
- v0.5.5-beta
- v0.5.4-beta
- v0.5.3-beta
- v0.5.2-beta
- v0.5.1-beta
- v0.5.0-beta
- v0.4.9-beta
- v0.4.8-beta
- v0.4.7-beta
- v0.4.6-beta
- v0.4.5-beta
- v0.4.4-beta
- v0.4.3-beta
- v0.4.2-beta
- v0.4.1-beta
- v0.4.0-beta
- v0.3.9-beta
- v0.3.8-beta
- v0.3.7-beta
- v0.3.6-beta
- v0.3.5-beta
- v0.3.4-beta
- v0.3.3-beta
- v0.3.2-beta
- v0.3.1-beta
- v0.3.0-beta
- v0.2.9-beta
- v0.2.8-beta
- v0.2.7-beta
- v0.2.6-beta
- v0.2.5-beta
- v0.2.4-beta
- v0.2.3-beta
- v0.2.2-beta
- v0.2.1-beta
- v0.2.0-beta
- v0.1.9-beta
- v0.1.8-beta
- v0.1.7-beta
- v0.1.6-beta
- v0.1.5-beta
- v0.1.4-beta
- v0.1.3-beta
- v0.1.2-beta
- v0.1.1-beta
- v0.1.0-beta
- v0.0.9-beta
- v0.0.8-beta
- v0.0.7-beta
- v0.0.6-beta
- v0.0.5-beta
- v0.0.4-beta
- v0.0.3-beta
- v0.0.3-alpha
- v0.0.2
- v0.0.2-beta
- v0.0.1-beta
- v0.0.1-alpha
- v0.0.0-beta
- v0.0.0-alpha
- dev-Roady1712117388
This package is auto-updated.
Last update: 2024-10-29 20:39:31 UTC
README
____ __
/ __ \____ ____ _____/ /_ __
/ /_/ / __ \/ __ `/ __ / / / /
/ _, _/ /_/ / /_/ / /_/ / /_/ /
/_/ |_|\____/\__,_/\__,_/\__, /
/____/
Development of Roady v2.0
Roady is a php
framework I have been developing for a long time.
At this point it is a passion project. I love coding, working
on Roady makes me happy.
Roady v1.1.2
is the current stable version of Roady, and can be
found here:
https://github.com/sevidmusic/roady/releases/tag/v1.1.2
Roady v2.0 is a complete re-write of Roady that will be influenced by Roady's original design, but will not be compatible with previous versions of Roady.
Note: At the moment I am using this file to plan the rest of
the re-write of Roady2.0
. This file will be revised to document
Roady2.0
before Roady2.0
is released.
Note: This document is still being drafted, and will continue to evolve over time.
About
Roady is a modular php
framework.
With Roady the features and functionality of a website are implemented by individual Modules.
For example, say my band used Roady to build our website, and we needed a music player, that music player would be implemented by a Module.
If we needed a calender to show upcoming gigs, it would be implemented by a different Module.
Multiple websites can run on a single installation of Roady, each making use of one or more installed Roady Modules.
Modules
Anatomy of a Module
How a Module Works
Modules should be located in Roady's modules
directory.
/path/to/Roady/modules
Modules may define output
to be displayed via Roady's UI in the form
of html
or php
files.
Modules may define css
stylesheets and javascript
files to define
styles and implement additional functionality for a website.
Modules may serve php
, html
, css
, and javascript
, in Response
to a Request to a website via the Routes defined in a json
file which is named after the website's Domain's Authority.
For example, sub.example.com.8080.json
would be the name of the
json
file used to define Routes for a website with the following
Domain:
https://sub.example.com:8080/
| \__________________/|
| | |
| AUTHORITY |
\_________________________/
|
Domain
Using a website's Domain's Authority to name Route configuration files allows Modules to define unique Routes for each website.
Routes
A Route defines the following:
-
The Name of the Module the Route is configured for. Note: It is possible for a Module to define a Route for another Module by setting the Route's Module name to the name of the relevant Module.
-
A collection of Names that correspond to the Names of the Requests that a Route should be served in response to.
-
A collection of Named Positions that correspond to the Named Positions provided by Roady's UI. These Named Positions are used to structure the collective output of all of the Route's that respond to the same Request.
-
A Relative Path to a
php
file,html
file,css
file, orjavascript
file.
For example, the following json
defines a single Route to a html
file named output-file.html
:
{ "module-name": "module-name", "responds-to": [ "name-of-a-request-this-route-responds-to" ], "named-positions": [ { "position-name": "roady-ui-named-position-c", "position": 1.7 } ], "relative-path": "path\/to\/output-file.html" }
Roady's User Interface (UI)
Roady's UI uses the Routes defined by installed Modules to determine
the html
that should be rendered in Response to a Request.
Roady's UI uses the Named Positions provided by an internally defined
html
layout to structure the collective output of Routes that
respond to the same Request:
<!DOCTYPE html> <html> <head> <title><roady-ui-page-title-placeholder></roady-ui-page-title-placeholder></title> <meta charset="UTF-8"> <meta name="description" content="<roady-ui-meta-description></roady-ui-meta-description>"> <meta name="keywords" content="<roady-ui-meta-keywords></roady-ui-meta-keywords>"> <meta name="author" content="<roady-ui-meta-author></roady-ui-meta-author>"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <roady-ui-css-stylesheet-link-tags></roady-ui-css-stylesheet-link-tags> <roady-ui-js-script-tags-for-html-head></roady-ui-js-script-tags-for-html-head> </head> <body> <roady-ui-pre-header></roady-ui-pre-header> <header class="roady-ui-header"> <roady-ui-header></roady-ui-header> </header> <main class="roady-ui-main-content"> <roady-ui-main-content></roady-ui-main-content> </main> <footer class="roady-ui-footer"> <roady-ui-footer></roady-ui-footer> </footer> </body> </html> <roady-ui-js-script-tags-for-end-of-html></roady-ui-js-script-tags-for-end-of-html> <!-- Powered by Roady (https://github.com/sevidmusic/roady) -->
The following table is an overview of the purpose of each of the Named
Positions provided by Roady's UI's internally defined html
layout: