Archive for April, 2008

Getting started with Pyrus, the new PEAR compatible package installer

April 30th, 2008

There are quite a few reasons to start playing with the new PEAR package manager – named Pyrus. The first of which is that it is filled with PHP 5 goodness, utilizing many features of the SPL. And secondly, PEAR2 is just around the corner and these are exciting times for PHP development.

Prerequisites:

  • PHP >= 5.3 (I believe you need libxml > 2.6.16, but could use some help verifying this)
  • SQLite Extension, should be included by default (sudo apt-get install php5-sqlite)

The first thing we need to do, is create a temporary directory to checkout the PEAR2 files from the repository:
Note: In case you haven’t heard, PEAR2 source files are in subversion at http://svn.pear.php.net/PEAR2


mkdir ~/PEAR2_SVN
cd ~/PEAR2_SVN/
svn co http://svn.pear.php.net/PEAR2


Great, now you have a copy of the latest files for Pyrus and PEAR2. (r 314 when this was written).
The following packages are the backbone of the new package manager:
PEAR2_Autoload
PEAR2_Exception
PEAR2_Pyrus
PEAR2_HTTP_Request
PEAR2_Developer (if you’d like to build some PEAR2/Pyrus installable packages)
The PEAR2 channel is not available yet, but we can install the individual packages in Pyrus by using their respective package.xml files within the svn checkout.
Before we install the new packages, let’s create a directory to place our Pyrus installation. Previously, users would create a system PEAR install in /usr/share/pear or similar, or a local PEAR install in ~/pear/. And at this point, you would have to make a decision you might have to live with for the rest of the installed packages’ lives. But, don’t worry! With PEAR2 we can move this Pyrus managed installation later if needed.

mkdir ~/pyrus
cd ~/pyrus/

Note: it is important to change the directory to where you wish to install the packages as the current directory will be used as the default install location for pyrus commands.
Now let’s install some packages

php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install ~/PEAR2_SVN/PEAR2/Autoload/trunk/package.xml
php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install ~/PEAR2_SVN/PEAR2/Exception/trunk/package.xml
php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install ~/PEAR2_SVN/PEAR2/HTTP_Request/trunk/package.xml
php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install ~/PEAR2_SVN/PEAR2/Pyrus/trunk/package.xml
php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install ~/PEAR2_SVN/PEAR2/Pyrus_Developer/package.xml

Now you have Pyrus and all the necessary dependencies installed!
To get started, you can create your PHP files which reference the PEAR2 autoloader by using:

<?php

require
'pyrus/src/PEAR2/Autoload.php';

How to create a PEAR2 package

The easiest way to create a Pyrus installable package is to set up a standard filesystem layout, and auto-generate the package.xml manifest for installation.
The source layout is as follows:
PackageName/src/      [role="php"]
PackageName/examples/ [role="doc"]
PackageName/doc/      [role="doc"]
PackageName/data/     [role="data"]
PackageName/tests/    [role="test"]
PackageName/www/      [role="www"]

In the root of your package directory create the following files:
CREDITS (this file contains the project lead info) example

; maintainers of PackageName

Brett Bieber [saltybeagle] <brett.bieber@gmail.com> (lead)

README (this file contains the summary and description for the package) example
This package is for use with blah


With this package you can do blah, blah, blah blah. My extended
description goes here.
RELEASE-0.1.0 (This file contains the release notes) example
This is the first alpha release.
You can create your PEAR2 installable package by using the Pyrus_Developer package and using a file like this:

makepackage.php
<?php

error_reporting
(E_ALL);

ini_set('display_errors',true);

require
'pyrus/src/PEAR2/Autoload.php';



$a = new PEAR2_Pyrus_Developer_PackageFile_PEAR2SVN(dirname(__FILE__), 'PEAR2_MyNewPackage');






Then run the file to generate the package.xml and install your package:
php makepackage.php

cd ~/pyrus

php ~/PEAR2_SVN/PEAR2/Pyrus/trunk/pyrus.phar install PackageName/package.xml



Hopefully this gives you all a quick understanding of how to get started, and some idea of where things are headed.

Note: The latest copy of this document is available at http://docs.google.com/Doc?id=dgtbrg66_50d5c68d

Catalog of Courses/Graduate Bulletin

April 17th, 2008

Course catalogs are a beast of a publication. The documents are traditionally printed on regular intervals and offer a complete listing of requirements and courses of study for an academic institution. For some students, these books become the bible by which their lives revolve around for 4+ years of professional education. They become a carefully studied map guiding them through the courses required to earn a very expensive piece of paper.

I followed my bulletin closely and kept a copy of it in a secure location. I would refer to it after every semester to make sure I was still on track. Sure there were minute changes, but this was a mammoth printed catalog… and acted as a binding contract between the school and the student.

As the electronic era has progressed, we’re offered new opportunities for publishing these large documents, be it PDF, HTML or even print on demand. At some point I’m sure typesetters were working on this document and it was rarely updated. At some point it was transferred to an electronic format, but still printed to paper. But recently I had the opportunity to transfer one of these large publications into an electronic format, that will hopefully become a long lasting appointment.

I’m referring to, an online course catalog or bulletin of courses. In this instance, the University of Nebraska-Lincoln’s graduate bulletin. Not to a PDF, but to a solely electronic based medium that will act as the permanent location of the publication.

The old file was a meticulously updated FrameMaker document, which offered some flexibility in output, but nothing to the extent required. The process took probably 3 months to complete, and went online last November to some quiet fanfare. But today, I felt one of the most gratifying moments any web developer could ask for… an end user expressed an unprovoked appreciation and testimonial of the website.

There may never come a day when someone acknowledges the revisioning features, the XCRI XML output format, the simple URL structure or the ease of editing – but after today, it was all worth it.

With that, here’s the link – I commend everyone else that has transferred one of these large publications into an online format, it is no easy task.

The University of Nebraska-Lincoln 2007-2008 Graduate Studies Bulletin

New PHP User Group – Lincoln, NE

April 7th, 2008

Greetings fellow PHP developers! I just wanted to invite you to a PHP
User Group meetup here in Lincoln (the first, to my knowledge).

This is something I’ve been meaning to do for a long time… and I’ve
finally set a time, a place, and a website. :-)

Thursday, April 10th 2008 7pm-8:30pm CBA 108

Right now the agenda is light, so if you have a topic you’d like to
talk on – by all means let me know and I’ll add it to the agenda.
Hopefully we can get some project demos and discussion on what people
are working on currently.

We have room for around 20 people so invite some friends and forward
this on if you know of anyone interested — especially students you
may have contacts with. I think student participation is key to the
growth and continued life of this user group.

The website is:
http://phpug.unl.edu/

I’ll bring some pop & pretzels…. Hope you can attend if you’re available!