Skip to content

Latest commit

 

History

History
100 lines (72 loc) · 3.91 KB

README.markdown

File metadata and controls

100 lines (72 loc) · 3.91 KB

base-jump

(c) 2008 Jason Frame [jason@onehackoranother.com]

base-jump is a simple PHP framework in the early stages of development. It was extracted from priceyourmeal.com and is built on the BasePHP library. PHP 5.3 is required.

Trying it out:

You need to set up an Apache vhost and do some configuration. A quick example (substitute {$DOC_ROOT} as appropriate):

<VirtualHost *:4014>

    DocumentRoot {$DOC_ROOT}/

    Options +FollowSymLinks

    php_value     auto_prepend_file   "{$DOC_ROOT}/_offsite/include/prepend.php"
    php_value     auto_append_file    "{$DOC_ROOT}/_offsite/include/append.php"

    <Directory {$DOC_ROOT}/>
        Options +Indexes
        Allow from all
    </Directory>

    <Directory {$DOC_ROOT}/_offsite/>
        Order deny,allow
        Deny from all
    </Directory>

</VirtualHost>

If you've got access to lighttpd via the CLI this is also an option - edit the paths to lighty and PHP in www/_offsite/shell/server and www/_offsite/config/lighty.conf respectively then run _offsite/shell/server from within the www directory.

Quickstart Guide:

Open www/index.php for editing and enter:

<?php
$tpl->name = "enter your name here";
?>

Now open www/tpl/index.php and enter:

<h1>Hello, <?= $name ?></h1>

Hit your web root with your browser and you should be greeted.

Things to note:

  • base-jump is short-tag friendly
  • The template object, $tpl, was automatically instantiated by PHP's auto prepend file (located at www/_offsite/include/prepend.php). $request is also available.
  • Fields assigned to the template object are extracted to regular variables in the template file
  • We didn't have to explicitly tell the template to render - this was handled by PHP's auto append file (located at www/_offsite/include/append.php)
  • The whole template is wrapped in a layout, found at www/_offsite/tpl/layout/default.php

Next, edit www/tpl/index.css and add:

h1 { color: red }

Refresh your web-browser and the greeting becomes red. Note that the layout mentioned above contains no reference to this stylesheet - the template object noticed there existed a stylesheet with basename matching that of the template file and injected it automatically. You can also use section.css to inject styles into all templates in a given directory.

Last thing. Create a file, www/_offsite/tpl/common.php, and write some HTML into it. Edit www/tpl/index.php again and append:

<?= $this->render_template(':common') ?>

Refresh and the content you entered into common.php will appear at the bottom of the page, demonstrating that we can prefix template references with : to indicate that they should be sourced from the template root (www/_offsite/tpl). Notice also that templates are rendered in the context of the template object so we were able to access template methods via $this.

That ends our quick tour. As you can see, base-jump is a lightweight framework that strives to keep out of your way as much as possible, allowing the use of PHP as normal while employing a few simple conventions to make your life easier. Strictly speaking it's not an MVC framework, but the following parallels could be drawn:

  • Model: all your application libraries and classes. These will typically live somewhere inside _offsite/include/lib.
  • View: the contents of all the **/tpl directories.
  • Controller: the scripts a user accesses directly via the browser (such as www/index.php from the quickstart) correspond to single controller actions. There is currently no equivalent of controller classes such as those found in Rails, but if present, base-jump will include a file called _dir.php before running any scripts in a directory.