webiik / staticpage
The StaticPage allows you to generate static pages.
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2025-02-28 04:03:31 UTC
README
StaticPage
The StaticPage allows generating static content from almost any PHP app on the fly. It is designed to be used inside any route controller and to serve static files using the NGiNX or another web server.
Installation
composer require webiik/staticpage
How To Steps
To make StaticPage work, follow these two steps:
-
Update your route controller(s):
Let's say you have the method
run()
you use as the route controller.public function run(): void { // Page URI $uri = '/foo/bar/'; // Page template $page = '<h1>Meow World!</h1>'; // Save static file the web server will try to serve with every next request $staticPage = new Webiik\StaticPage\StaticPage(); $staticPage->save($page, $uri); // Show dynamic page when the server didn't serve the static page echo $page; }
-
Update your web server configuration (NGiNX example):
- Add
/_site${uri} /_site${uri}index.html
to the beginning of yourtry_files
directive in the mainlocation
. It tells NGiNX to try to serve static files at first. Eg:location / { try_files /_site${uri} /_site${uri}index.html $uri $uri/ /index.php?$query_string; }
- Check the configuration and restart the server.
Configuration
setDir
setDir(string $dir): void
setDir() sets a relative path to where all generated static files will be stored. Default path is ./_site.
$staticPage->setDir('./_site');
Generating
save
save(string $data, string $uri, string $file = 'index.html'): void
save() creates directory structure according to $uri and inside it saves $file with the content of $data.
$staticPage->save('<h1>Meow World!</h1>', '/foo/bar/');
Deleting
delete
⚠️ Be very careful when using this method.
delete(bool $test = true): void
delete() deletes content of $dir. When $test mode is set to true, it only printouts files to be deleted but doesn't delete them.
$staticPage->delete();
This method can be called from CLI. It accept two arguments $dir and $test.
php StaticPage.php /absolute/path/to/static/_site true