A very simple and lightweight PHP boilerplate.
Fushi is a simple, lightweight PHP boilerplate (definition of Boilerplate on Wikipedia).
It can be used for building a large variety of projects, small and large.
It has a very simple but powerful built-in templating system, as well as a pretty backend interface.
library/functions/
)In order to run Fushi, you just need:
/db
folder and create a new database with the provided MySQL dump./config
folder and edit database.php
. You'll also need to edit paths.php
in the same folder.If you have edited the above files properly, just surf to the root of your website and you should be able to see the home page.
Having trouble during installation? Please let me know.
In alphabetical order and in a tree-structured way, I'll proceed describing the folders and their content.
In the most important file, bootstrap.php
, are declared some fundamental variables:
$_GET
array sanitized. It actually discards every variable in the URL that contains specials characters. It only accepts numbers, letters, hyphens and underscores.$get[0]
.$template['_id']
$template['name']
$template['title']
$template['h1']
$template['h2']
$template['metaDescription']
$template['metaKeywords']
style.css
and templates/$template_name.css
(the current template's CSS).The frontend engine is based upon the HTML5 Boilerplate (v3.0.2, released on feb 19, 2012).
You're completely free to organize and manage your CSS as you wish: however I suggest you trying to maintain your structure as modular as possible. You can always use @import url('style.css');
but this is discouraged. Use application/boot.php
to arbitrarily import:
public/css/classes/
;public/css/modules/
;public/css/templates/
.So remember that when your web application has a modular piece (i.e. an header or footer), you can declare it as module and subsequently recall it in a specific template; you can even create new templates based on the concept of inheritance!
These "non-semantic helper classes" are available:
.ir
.hidden
.visuallyhidden
.invisible
.clearfix
For the explaining I recommend you reading the h5bp documentation: http://html5boilerplate.com/docs
The classes .left
and .right
just make block elements float to left or right respectively.
Just two words on JavaScript: script.js
is the main JS file, that loads automatically in every page.
Besides that, you're free to load all .js files you want.
jQuery is the Fushi's default library; if you need a different one, add it in public/js/libs/
folder. If you need a jQuery plugin, add it in public/plugins/
folder.
The public/js/ajax.js
file is responsible for managing all Ajax requests, and strictly collaborates with public/ajax.php
.
A detailed explaining of an Ajax request in Fushi:
class=action
, it will do an Ajax request.ajax.php
will be loaded, and it will read the href
attribute.href
will be parsed and Ajax will route to the right file.<div id=response>
will output the HTML.A concrete example:
<a class="action update" href="fruit/update/3">Update this!</a>
.ajax.js
loads ajax.php
, passing the href
to it (fruit/update/3
).ajax.php
realizes that fruit_update.php
must be executed.ajax.js
outputs the HTML returned by fruit_update.php
.You can access to the backend interface by http://yoursite.com/backoffice
.
Example user (administrator):
Example user (no administrator privileges):
However, you can't see anything in the backend if you have no admin privileges. Even though you try to login (or you're already logged in), in every circumstance you're just going to be redirected to the index.
The backend interface is based on the CRUD (create, read, update, delete).
Every table has usually 3 files in application/backoffice/
.
For example:
Table: Products
Files:
products.php
products_form.php
products_read.php
The 3 files above are handling all the operations behind the Product
object.
As for convention over configuration, the table names must always be in plural form.
From the backoffice you can also generate a template scaffold, but beware: you can't rename a template. If you need to delete a whole template, just remove its files: one is in application/templates/
, and the other one is in public/css/templates/
.
Sessions are automatically handled by lib/session.php
.
You will always have the following variables available globally:
$session
_id
user_id
sessionId
ipAddress
userAgent
entryDate
lastActivity
$user
_id
login
name
surname
email
password
address
cap
city
bio
is_admin
is_deleted
created_at
updated_at
birthday
Q: I've uploaded every single file in the root of my web server, but Fushi throws weird errors like unexpected T_FUNCTION...
A: Make sure you upload everything in binary mode.
Q: I get a 500: Internal Server Error. What can I do?
A: This is usually related to .htaccess
files. Please check your webserver's log.
Please open a new issue if you have any questions.
Thank you for using Fushi! You are awesome!
This content is released under the MIT License.