• Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    PHP
  • License
    Other
  • Created over 11 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PHP7 Fat-Free Framework (http://fatfreeframework.com) example - A skeleton i18n web application which implements an MVC structure ( https://github.com/vijinho/FFMVC ) and includes the files from the https://getbootstrap.com project.

f3-boilerplate

Use the branch skeleton-nodb-nobs for a skeleton setup with no database features enabled (commented-out), no bootstrap files and empty .md files.

Travis CI Build Status Code Coverage Scrutinizer Code Quality

f3-boilerplate homepage screenshot

Skeleton PHP7 Fatfree-framework MVC website codebase.

Project Goal: Be a good and extremely flexible starting-point for implementing any kind of PHP project in F3.

## Usage

  • Clone the project
  • Change the app/config/default.ini and config.example.ini files to suit your project - create your local setup config.ini file from this.
  • Change the files in app/lib/App and the associated routes in app/config/routes-*.ini to suit.
  • Run composer dump to update your the autoloader with your newly created classes

PHP7 only now! - see CHANGELOG.md

Is this project for you?

I wrote this project for myself, but if you are thinking to use it, thinking on the points below will help you decide.

  • You want to implement a website using the Fat-Free Framework
  • You need a stable project that can be easily adapted and altered to suit whatever your web development needs are.
  • You need to quickly and easily integrate composer classes into a project structure to get up and running ASAP.
  • You need to write some boilerplate code to add project structure and initialise some commons tasks like config, logging, database connections, set up environments for production and development etc
  • You may want the ability to setup your database connections in the http format - dbms://user:host@server:port/databasename
  • You are thinking to run f3 on the command-line and want to see how it could be done.
  • You are thinking to write an API based on REST responses and would like a starting point for to how to implement it in f3.
  • You would like to see a real-life example of f3 features for render markdown, display geo-location, database connectivity.
  • You want to have your project configuration split up into different files for the main configuration as have a local override file.
  • You would like to have your script log how long it took to run and how much memory it used after executing when in 'development' mode.
  • You need to make sure that ALL script input is normalised and cleaned by default.
  • You want to use namespaces in your project

Setup

Composer and Webserver

  • Get Composer - curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin -filename=composer
  • Run composer update
  • Setup webserver config from app/config/webserver
  • OR run with php in-built webserver from www: php -S http://127.0.0.1:8080 and browse to http://127.0.0.1:8080

Configuration

  • Copy app/config/config.example.ini to config.ini
  • Edit app/config/config.ini and add anything extra from default.ini for overrides
  • In the top level folder run composer install

### Database

  • Create a database dumpfile to auto-import in data/db/sql/create.sql (set ini option for db.create=true)

Folders & Permissions

Setup empty website folders as follows:

mkdir -p tmp/cache tmp/sessions tmp/uploads tmp/logs data
sudo chown -fR www-data:www-data tmp data
sudo chmod -fR 777 tmp data

Description of Project Layout

Note: The files that were in lib/FFMVC have now been split-out into their own repository https://github.com/vijinho/FFMVC They can then be included in your own project by adding the same lines in your composer.json as used in mine here.

Core Files/Paths

  • lib/bcosca/fatfree-core - fatfree framework (core) lives here
  • www - website and public doc root (aka public_html or htdocs etc)
  • www/index.php - start website application here - is the default file used by .htaccess for routing
  • app - the website application lives outside the webroot for security
  • app/lib/App/App.php - start fatfree project by including this file and executing Run();
  • lib/ - all external library files/classes
  • app/lib - local application-specific libraries
  • app/lib/App/Controllers - MVC Controllers
  • app/lib/App/Controllers/API - MVC Rest API Controllers
  • app/lib/App/CLI - Controllers for when executing in a command-line environemnt
  • tmp/cache tmp/sessions tmp/uploads - temporary files
  • tmp/logs - application logfiles
  • data - website data storage folder
  • docs - application documentation (markdown files)
  • app/config - application configuration files
  • app/config/vhost - application virtual host configuration files (apache and nginx supported)
  • bin/cli.php - symlink to command-line runner in app/lib/App/CLI.php' which uses routes in app/config/routes-cli.ini`
  • app/en/templates/error/ - these files are standard php includes, not f3 templates, used by the error handler function
  • app/en/templates/error/debug.phtml - debug error page (if DEBUG=3)
  • app/en/templates/error/404.phtml - 'friendly' file not found page
  • app/en/templates/error/error.phtml - 'friendly' error page
  • tests - unit tests see docs/TESTING.md

Supplemental Files/Paths

Used for bootstrapping the application and generic enough to be separate from the main project.

  • lib/FFMVC/App.php - Base Application Class to start/shutdown app
  • lib/FFMVC/App/Helpers - Auxillary helper functions and utility libraries specific to the project

External Libraries

  • DICE dependency injection container
  • Whoops for nicer error handling if level of DEBUG=4
  • Climate is used for the CLI utility methods.

SSL (Optional)

Test certificates in app/config/webserver/ssl/ Use Let's Encrypt to generate a real live valid SSL certificate for production environments.

Dummy certificate (example)

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=GB/ST=STATE/L=TOWN/O=Office/CN=f3-boilerplate.local" -keyout f3-boilerplate.key -out f3-boilerplate.crt

Add to apache virtual host (and also see the f3-boilerplate-ssl.local files in app/config/webserver/

    SSLCertificateFile ssl/f3-boilerplate.crt
    SSLCertificateKeyFile ssl/f3-boilerplate.key

MAMP lets you add the SSL file in the Hosts/SSL tab.

Running from the CLI

From the base folder run:

php app/lib/App/CLI.php /

The output will be:

CLI Script
FFCMS\CLI\Index::index
Hello World!
Finished.
Script executed in 0.048 seconds.
Memory used 2.29 MB.

-- http://www.urunu.com

More Repositories

1

ISO-Country-Data

ISO Country data in JSON and CSV format.
48
star
2

epl_mysql_db

Free/open English Premier League results database from 1993-2017. Dump format is MySQL and sqlite.
PHP
38
star
3

f3-cms

PHP7 Fat-Free Framework https://fatfreeframework.com based CMS extending original https://github.com/vijinho/f3-boilerplate project and using UI-kit http://materializecss.com/
PHP
32
star
4

kivy-skeleton

This is a skeleton application based on the first app I released on Google Play. It is free-to-use as you wish.
Python
12
star
5

FFMVC

Set of classes to use in a Fat-Free Framework MVC Project - used in example project https://github.com/vijinho/f3-boilerplate
PHP
10
star
6

beautifully-simple-static-blog

Python 2&3 (optionally static-file generating) Blog App: Because there aren't enough static website generators already in existence that look beautiful using Python/Bottle.
Python
8
star
7

moon

CLI script/web API to show lunar phase information
PHP
8
star
8

kivy-pocket-philosopher

Pocket Philosopher - Find this on Google Play. A Python/Kivy project to edit, display and share aphorisms in a fun way. Project formerly named 'aforgizmo'
Python
7
star
9

php7-enums

A very flexible ENUM implementation class in PHP7 using magic methods
PHP
7
star
10

muttrc

My mutt email client configuration for Gmail with PGP
4
star
11

sun

A command-line php/www rest tool for calculating sun position, sunlight phases (times for sunrise, sunset, dusk, etc.)
PHP
3
star
12

sp500

S&P500 Daily Data in MySQL, sqlite and CSV formats
Shell
3
star
13

kohana2-legacy

This is a forked version of the final version of Kohana 2.3.4 made to work under more recent versions of PHP than originally coded against. Work is in progress to make it work under PHP7...
PHP
3
star
14

wordpress-plugin-skeleton

Skeleton file structure for creating a Wordpress plugin
PHP
1
star
15

feedex

PHP CLI and REST tool to search URLs for RSS/ATOM feeds and extract them, optionally as JSON or OPML.
PHP
1
star
16

ryzentosh-msi-b550-tomahawk

Opencore Ventura EFI - Ryzen 5600, RX6600, MSI B550 TOMAHAWK MAG Motherboard
Shell
1
star