PHPBuilder - Creating a Simple Extendable Module System

RSS Twitter

Creating a Simple Extendable Module System

by: Scott Meyers
December 21, 2004

Creating a Simple Extendable Module System

Many web pages these days contain a sidebar filled with all sorts of goodies:  Calendars, Searches, Links, RSS News feeds, etc. For those DIYers this can get sort of ugly if you are sticking all of these into a single php document.  What we are going to show you in this article is how to create a simple way to import these types of features as self contained modules. First we'll start real simple, then cover a few ways to expand this.

What you'll need

Essentially you need a basic PHP enabled website (doh!), additionally for this lesson you'll need the File_Find class available from PEAR. File_Find is going to help us read in our modules. There are other ways to do this that aren't too difficult, but there is no reason to reinvent the wheel either.

Getting File_Find with PEAR

Provided you have pear properly installed, getting File_Find is rather trivial. To give it a check try typing pear at the command line. Just typing pear should result in the a print out some help options for using PEAR. For example:
stitch:~ scott$ pear

Usage: pear [options] command [command-options] 

Type "pear help options" to list all options.

Type "pear help " to get the help for the 
specified command.


build        Build an Extension From C Source

bundle       Unpacks a Pecl Package

clear-cache  Clear XML-RPC Cache

config-get   Show One Setting

config-help  Show Information About Setting

config-set   Change Setting

config-show  Show All Settings

cvsdiff      Run a "cvs diff" for all files in a 

cvstag       Set CVS Release Tag

download     Download Package

download-all Downloads each available package from 

info         Display information about a package

install      Install Package

list         List Installed Packages

list-all     List All Packages

list-upgrades List Available Upgrades

login        Connects and authenticates to remote 

logout       Logs out from the remote server

makerpm      Builds an RPM spec file from a PEAR 

package      Build Package

package-dependencies Show package dependencies

package-validate Validate Package Consistency

remote-info  Information About Remote Packages

remote-list  List Remote Packages

run-tests    Run Regression Tests

search       Search remote package database

shell-test   Shell Script Test

sign         Sign a package distribution file

uninstall    Un-install Package

upgrade      Upgrade Package

upgrade-all  Upgrade All Packages

If you get that, or something similar, we can assume that PEAR is installed. Now to install File_Find, simply type:
stitch:~ scott$ sudo pear install File_Find  


downloading File_Find-0.2.0.tgz ...

Starting to download File_Find-0.2.0.tgz 
(3,245 bytes)

....done: 3,245 bytes

install ok: File_Find 0.2.0

(Note the sudo, you'll likely need administrative rights to install classes with PEAR. If you don't, you can still download the PEAR classes individually, and install them in a local php include directory.)

Finally to make sure everything worked like it should we can list our installed PEAR classes and make sure File_Find is there:
stitch:~ scott$ pear list

Installed packages:


Package        Version State

Archive_Tar    1.2     stable

Console_Getopt 1.2     stable

DB             1.6.8   stable

File_Find      0.2.0   stable

HTTP           1.3.3   stable

Mail           1.1.4   stable

Net_SMTP       1.2.6   stable

Net_Socket     1.0.2   stable

PEAR  stable

SQLite         1.0     stable

XML_Parser     1.2.1   stable

XML_RPC        1.1.0   stable

Alas, everything looks right.

Next Page »

Comment and Contribute

Your comment has been submitted and is pending approval.

Scott Meyers



(Maximum characters: 1200). You have characters left.