Be ye wantin an MVC framework peppered with local pirate lingo?
It be the most bare bones framework in the seven seas!
http://bonemvc.delboysplace.co.uk
composer create-project delboy1978uk/bonemvc your/path/here dev-master
###Apache setup
We don't need tellin' ye, t' be sure, but a typical Apache vhost settin' might be lookin' like this:
<VirtualHost *:80>
DocumentRoot "/var/www/bonemvc/public"
ServerName dev.bonemvc.com
ServerAdmin [email protected]
ErrorLog "logs/error_log"
SetEnv APPLICATION_ENV development
<Directory "/var/www/bonemvc">
DirectoryIndex index.php
FallbackResource /index.php
Options -Indexes +FollowSymLinks
AllowOverride all
Require all granted
</Directory>
BrowserMatch ".*MSIE.*" nokeepalive downgrade-1.0 force-response-1.0
</VirtualHost>
###config Garr! In the config folder be two files, config.php, and config.dev.php.dist. ####routes Th' default route matchin' system follows the followin' pattern:
/controller/action/param1/value1/param2/value2/etc/etc
In the config.php ye can customise routes to go to certain controllers and actions like this:
'routes' => array(
'/some-custom-url' => array(
'controller' => 'index',
'action' => 'index',
'params' => array(
'user' => 666,
'skull => 'crossbones',
),
),
),
Ye can configure mandatory and optional paramaters in your routes like this:
/my-route/:mandatory[/:optional]
In yer controller, ye would ask fer $this->getParam('mandatory');
and $this->getParam('optional');
####db
Ye can connect to a MySQL database by puttin' yer connection details in th' config
'db' => array(
'host' => '127.0.0.1',
'database' => 'bone',
'user' => 'leChuck',
'pass' => 'bigWh00p',
),
Then in yer controller, ye can get a PDO connection by saying:
$this->getDbAdapter();
###templates Ye can put a master template in here. Bone be lookin' in App\View\layouts fer a PHP file by th' same name.
'templates' => array(
'layout'
),
Be checkin' th' folder fer an example!
###config.dev.php.dist
This be a config which can override th' production settin's. Remove the .dist extension, and ye can add details for your dev environment.
##Controllers
Make yer controller extend Bone\Mvc\Controller
, and name your controller actions like pirateAction() etc.
T' send data t' th' view, ye can either return an array, or call
$this->view->someVar = 'gaaarrrrr!';
// or
return [
'someVar' => 'gaaarrrr!',
];
####init() and postDispatch()
Th' init(); and postDispatch() methods will run before and after your controller action does, so ye can do stuff in
there too if need be!
####JSON Content Type
Buildin' an API, aye? Ye can send application/json
by callin' the followin' method in yer controller action:
$this->sendJsonResponse($array);
####HTTP Requests, Responses, and Headers
Bone be all shiny and new these days, and we be usin' PSR-7 Request and Response objects. Ye can get them using th'
getHeaders()
method, or individual headers with the getHeader($key)
method. $this->getRequest()
be
returnin' an instance of Psr\Http\Message\ServerRequestInterface
.
##Views
We pirates be luvvin' PHP, and as such v2.0.0 of Bone MVC has made Twig walk the plank! We now be using th' fantastic
Plates (http://platesphp.com/). Anything ye send up t' th' view like $this->view->drink = 'grog';
can be output
in the view by a simple:
echo $drink;
Of course, ye be wantin' to escape your output too! So do it like this:
echo $this->e($drink);
##Registry Bone be usin' a Registry to store stuff in. Soon we'll be changin' that to use Barnacle, a plundered version of th' awesome Pimple dependency injection container. T' use it, just do the followin':
use Bone\Mvc\Registry;
Registry::set('name' => 'Guybrush');
echo Registry::set('name'); // outputs 'Guybrush'
Ye can store whatever th' hell be needin' stored, objects, or whatever! ##Additional Libraries Avast ye! We be usin' some additional libs by th' Cap'n (delboy1978uk), namely:
delboy1978uk/cdn
delboy1978uk/form
delboy1978uk/image
delboy1978uk/session
Fer the CDN lib, ye can quickly echo out javascript and css using Del\Cdn
, see App\View\layouts\layout.php
fer an example.
See also use Del\Icon
and Del\Css
, which come as part of the cdn lib.
Ye can create custom Bootstrap ready forms usin' delboy1978uk/form
, see the Github page fer details.
Ye can manipulate images usin' the gd PHP functions, with the Del\Image
class.
Ye can set Session variables usin' Del\SessionManager
, see GitHub for info.
####Get Swashbucklin'! Gaarrrrr!