silverorange / site
Framework for building a website.
Requires
- php: >=8.1.0
- ext-curl: *
- ext-gd: *
- ext-iconv: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- ext-pcre: *
- aws/aws-sdk-php: ^3.0.0
- codescale/ffmpeg-php: ^3.2.0
- pear/text_password: ^1.1.1
- sentry/sentry: ^4.9
- silverorange/concentrate: ^2.0.0
- silverorange/mdb2: ^3.1.2
- silverorange/swat: ^7.9.2
- silverorange/xml_rpc2: ^2.0.5
- silverorange/xml_rpc_ajax: ^3.1
- symfony/mailer: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.64.0
- phpstan/phpstan: ^1.12
- rector/rector: ^1.2
Suggests
- ext-amqp: Allows some operations to use a message queue system.
- ext-imagick: Enables SiteImage processing abilities.
- ext-memcached: Allows caching various resources.
- ext-pnctl: Process control management for command-line applications.
- ext-redis: Allow connecting applications to a Redis data store.
- pelago/emogrifier: Inlines CSS in multipart mail messages.
- psr/log: Enables logging using the PSR logging interface.
- silverorange/admin: Enables admin components
- silverorange/jwplayer: Enables video player support.
This package is auto-updated.
Last update: 2026-06-23 19:49:05 UTC
README
Site is a Website framework built on top of Swat. Site provides several features in one monolothic package:
- general application framework
- command line application framework
- web application framework
- web request routing
- image processing
- media processing
- account sign in and session management
- ad referral processing
- attachment uploading
- cdn management
- user commenting
SiteApplication
This represents an application. There are two main child classes:
- SiteWebApplication, and
- SiteCommandLineApplication
SiteApplicationModule
Reusable features of applications (web or CLI) that should be available wherever there is application context are provided using a module interface.
Example provided modules are:
- database
- config
- memcache
- cd
- messages (cross-request session messages)
Modules declare their dependencies and are initialized using a tree sorting
algorithm. For example, the messages module depends on the session module.
SitePage and SitePageDecorator
Pages represent route endpoints (URLs) in a web application. The URL path is
often referred to as $source. Each page has several lifecycle hooks that can
be overridden:
init()- initialize objects that may be common to both theprocess()and build methods. Validating HTTP GET parameters can be done here.process()- runs betweeninit()andbuild(). This method is indended to contain request logic that might prevent the page from being rendered. Handling HTTP POST parameters is done here.build()- use this method to render content and pass it to the page layout. If the page request does not cause a redirect, this method is used to build the response.finalize()- use this method to collect HTML head entries or perform any other post-build operations.
Decorators are composable objects that implement the page interface. They can enable horizontal reuse of features.
SiteLayout
In a web application, each page has an associated layout. The page and layout
are created and configured in SiteWebApplication::getPage(). One or more
SitePageFactory objects may be used to select the correct page object and
layout for a request.
The page sets properties on the layout's $data object. These properties can
be used directly inside layout templates. Templates use pure immediate-mode
PHP.
Like pages, layouts have request lifecycle hooks. These hooks run before the page hooks of the same name:
init()process()build()finalize()complete()- this hook is only present in layouts and allows using data from the page'sfinalize()hook to build layout template values. It runs after the page'sfinalize()hook.
Additional Documentation
Installation
composer require silverorange/site