[Solar-talk] Solar 0.24.0 release narrative

Paul M Jones pmjones at solarphp.com
Tue Sep 26 07:55:03 PDT 2006


Last night, I released version 0.24.0 of Solar, the simple object  
library and application repository. Solar is a PHP 5 framework for  
rapid application development.

On an administrative note, Clay Loveless has set up a Trac  
installation for us, so now you can report bugs and request  
enhancements without having to join the Solar-Talk mailing list. You  
can keep up with the Trac issues via the Solar-Trac mailing list if  
you like.

You can read the change notes for a full run-down, but there are a  
few changes in particular that I want to highlight.

Solar_Request

In previous releases, the Solar arch-class had a series of methods to  
read from the superglobals: Solar::post(), for example, would read a  
$_POST key and return it (or a default value of your choosing if the  
key did not exist). Those methods and their related support methods  
have been removed from the arch-class and placed in their own class,  
the new Solar_Request.

For now, Solar_Request acts as a singleton, since it is tied back to  
the super globals. Future releases will convert it to a true  
standalone object, and classes that need access to the request  
environment will receive a dependency injection of a Solar_Request  
object.

Whereas you would have used Solar::post() in earlier versions of  
Solar, you now create a Solar_Request object and use the $request- 
 >post() method. Solar_Request provides access to these superglobals  
after some minimal filtering (essentially just stripping magic quotes):

get() -- $_GET
post() -- $_POST
cookie() -- $_COOKIE
env() -- $_ENV
server() -- $_SERVER
files() -- $_FILES
http() -- ...
Wait a minute, there's no "HTTP" superglobal! One of the things that  
Solar_Request does for you is some basic cleaning and normalizing of  
the $_SERVER['HTTP_*'] values into their own storage array, so you  
can ask for the HTTP headers directly. For example, to get the value  
of the "X-Requested-With" header, ask for $request->http(‘X-Requested- 
With').

Solar_Request also lets you check how the current request was made:

isGet() is true if this was a GET request
isPost() is true if this was a POST request
isPut() is true if this was a PUT request
isDelete() is true if this was a DELETE request
isXml() is true if this was an XMLHTTP request (Ajax!)
Many thanks to Clay Loveless for getting Solar_Request up and running.

Solar_Session

Similar to Solar_Request, Solar_Session (here) provides an interface  
to the $_SESSION superglobal. It also takes over for the previous  
Solar_Flash class by providing read-once "flash" support via the  
$_SESSION values.

In Solar, we aggressively segment the global name space so that  
different classes don't step on each other's toes. Solar_Session  
makes this segmentation easier, by providing a config key to tell the  
particular instance what class name space it should be working within  
the $_SESSION array.

Progressive Ajax Enhancement

It's not much, but I've added the tiniest bit of Scriptaculous  
enhancement to the reference application that comes with Solar,  
SolarAppBookmarks. In the "edit" view, instead of using a simple  
class to indicate success or failure of a save, I've put in a pair of  
effect calls:

// output a form from the "formdata" processor
echo $this->form(array('id' => 'form-bookmark'))
       ->auto($this->formdata)
       // ...
       ->fetch();

// add an effect for success message lists
$this->jsScriptaculous()->effect->highlight(
     "#form-bookmark ul.success",
     array(
         'duration' => 3,
         'endcolor' => '#aaaaff',
         'restorecolor' => true,
     )
);

// add an effect for failure message lists
$this->jsScriptaculous()->effect->highlight(
     "#form-bookmark ul.failure",
     array(
         'duration' => 3,
         'endcolor' => '#ffaaaa',
         'restorecolor' => true,
     )
);


That's all it takes. Again, Clay Loveless has done wonderful work  
with his JavaScript helpers for Solar.




--

Paul M. Jones  <http://paul-m-jones.com>

Solar: Simple Object Library and Application Repository
for PHP5.   <http://solarphp.com>

Savant: The simple, elegant, and powerful solution for
templates in PHP.   <http://phpsavant.com>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.killersoft.com/pipermail/solar-talk/attachments/20060926/d0fef86c/attachment-0001.htm 


More information about the solar-talk mailing list