Skip to content

A simple business site written with PHP

License

Notifications You must be signed in to change notification settings

williamvds/business-site

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Screenshot of homepage

Screenshot of adaptive homepage

A simple business site

This project provides the backbone for the content a business might want to display on their website

  • Simple and clear style

  • Adapts to differently sized screens, using only CSS media queries

  • Minimal JavaScript for loading pages through AJAX requests

  • CSS-only slideshow and gallery page

  • Routing controlled by PHP with...

    • a controller system
    • support for parameters extracted from the request URI
    • the ability to respond in JSON format
  • A basic language system

Installation

  • Folder with AllowOverride enabled for .htaccess

  • Enable httpd modules:

    • php7_module
    • rewrite_module
    • expires_module
    • deflate_module

Usage

Folder structure

The /static folder is the only one containing the files that users are able to download.

All other requests are silently redirected to /src/index.php.

As such, store any files that users must be able to download in /static - that includes JavaScript, CSS, and images.

See .htaccess to see how this is done using the rewrite engine.

Router

See /src/index.php and /src/routes.php for more simple examples.

1. Responding to requests

$router = new Router;

$router->use( function() {
  echo 'This is called for all requests<br>';
} );

$router->post( function() {
  echo 'This is called for all POST requests<br>';
} );

$router->use( function() {
  echo 'This is always the last controller called';
  return true; // Stop other controllers running after this
} );

Methods available for GET, POST, PUT, and DELETE, all following the same format

2. Filtering by request path

$router->use( '/', function() {
  echo 'You\'re home!<br>';
} );

$router->use( '/.*', function() {
  echo 'You\'re away from home<br>';
} );

$router->use( '/foo', function() {
  echo 'You\'re at /foo<br>';
  return true;
} );

$router->use( '/foo*', function() {
  echo 'Your request began with /foo<br>';
  return true;
} );

3. Getting parameters from URI

$params is provided as a parameter in each callback. It is also available in the global scope.

It contains the matched information from the URL pattern used.

$router->use( '/foo/:bar', function( $params ) {
  echo $params['bar'];
  return true;
} );
// Go to /foo:        no output
// Go to /foo/1:      1
// Go to /foo/string: string

$router->use( '/foo/:bar/:baz', function( $params ) {
  print_r( $params );
  return true;
} );
// Go to /foo:     no output
// Go to /foo/1:   no output
// Go to /foo/1/2: Array ( [0] => /foo/1/2/ [bar] => 1 [1] => 1 [baz] => 2 [2] => 2 )

Attribution

Facebook logo - Zlatko Najdenovski (CC BY 3.0)

Menu icon - Google material icons (Apache 2.0)

SVG flags - Panayiotis Lipiridis (MIT License)

About

A simple business site written with PHP

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published