This is an old revision of the document!


Splint

A Package and Dependency Manager for CodeIgniter

Splint is a product inspired by how wonderful the core of CodeIgniter, a light weigh MVC Framework with a lot of functionalities embedded in it. such that PHP libraries that were designed in a universal context may have to re-write some of the functionalities already found in CodeIgniter so that it could be used anywhere.

This could bloat resulting applications and of course present inefficiencies in the running of applications.

Splint presents a way which developers can write libraries and at the same time use the functionalities which CodeIgniter provides (such as Image Processing, Form Validation, Zip Class, Database Libraries, etc.) to provide efficient and powerful light-weight libraries.

Writing libraries for Splint also gives you the ability to write sub CodeIgniter applications that can be installed within a CodeIgniter application bundle.

To use a Splint library, simply download and install the Splint client from here, then run splint install <vendor\library_name> at the root of your CodeIgniter project with a terminal.

You can then proceed to the library's page to view it's README on how to load it. You are most likely to load Splint libraries like this from within a controller.

$this->load->splint("vendor_name/library_name", "+LibraryClassName" , $params, "alias"); // Library loaded and initialized with $alias.
$this->alias->someMethod();

the $this→load→splint(); method call is available when you patch your Loader class and fortunately, the Splint command line tool automatically does that for you the moment you install a library.

Notice the + character before LibraryClassName in the above code. This tells splint to load a library from the specified package vendor_name/library_name or rather search for a php file in with the name LibraryClassName from the libraries folder in the specified package and load it.

You can also load views, models, helpers and configs. All you need to do is use the required character as a prefix to the file name of the asset or php file you want to load from the package.

Auto-load Prefixes

The table below shows the characters and what they instruct the splint loader to load/search for.

Character To Load
+ Library
* Model
- View
@ Config
% Helpers
Examples

For a library called ci-preference created by a vendor named francis94c, we can load a Library, Model, View, Config, or Helper in the manner shown below.

// Library.
$this->load->splint("francis94c/ci-preference", "+CIPreferences", null, "prefo");
$this->prefo->get("a_key", "defaultVal");
// Model.
$this->load->splint("francis94c/ci-preference", "*ModelClass", "alias");
$this->alias->someMethod();
// View.
$this->load->splint("francis94c/ci-preference", "-view_header", array("text" => "Hello"));
// Config.
$this->load->splint("francis94c/ci-preference", "@config_file");
// Helper.
$this->load->splint("francis94c/ci-preference", "%helper");
Load Multiple Libraries Or Resources

You can load libraries/resources at the same time using an array of associative arrays of arrays as shown below.

$autoload = array();
$autoload[] = array("library" => array("CIPreferences", null, "alias"));
$autoload[] = array("model"   => array("CIPrefModel", "alias"));         // Model with alias.
$autoload[] = array("model"   => "CIPrefModel");                         // Model without alias.
$autoload[] = array("config"  => "pref_config");                         
$autoload[] = array("helper"  => "pref_helper");                         
$autoload[] = array("view"    => "view_name");                           
 
$this->load->splint("francis94c/ci-preference", $autoload);
 
// For loaded library.
$this->alias->someMethod();
Topics