[Solar-talk] Solar 0.19.0 released

Paul M Jones pmjones at solarphp.com
Wed May 24 19:02:14 PDT 2006


Hi everyone,

I just released Solar 0.19.0; you can get it from the usual source.   
The big additions in this release are project-support related.

The Solar_Docs_Apiref class will read an entire Solar-style file  
hierarchy and parse the inline documentation into an array; you can  
then build a writer of your own to take that array and generate  
documentation files from it.  (This is how I build the API reference  
documentation for the Solar web site.)

The related Solar_Docs_Phpdoc class will parse a PHPDoc comment block  
into its summary, narrative, and technical portions.  While nowhere  
near as robust as Greg Beaver's PHPDocumentor, I think the internals  
of Solar_Docs_Phpdoc are much easier to understand.  It doesn't  
support inline tags, but most of the important block tags are  
recognized and parsed appropriately (@var, @param, @return, @throws,  
etc).

Solar_Docs_Apiref also makes use of the new Solar_Class_Map, which  
parses a Solar-style file hierarchy and returns an array of class- 
name keys with file-name values.

There is a new Solar_Log class, with adapters for file-based logging  
(good for production), echo-based logging (good for development), and  
multiple log support.

There's one big change in Solar_View: instead of custom helper  
locations being defined by paths, they are now defined by class  
names.  This means your custom helpers no longer need to be named  
'Solar_View_Helper_*'; you can now name them as is proper for their  
location in the file system.  For example, if your helper classes are  
in the "Vendor/App/Helper/*" directory, you now name each helper  
class "Vendor_App_Helper_*".  This makes helper class names  
consistent with the rest of Solar.

In line with this, you no longer use Solar_View::addHelperPath(),  
getHelperPath(), or setHelperPath(); instead, you addHelperClass(),  
getHelperClass(), and setHelperClass().  The class-based methods work  
just the same as the path-based methods, except you specify class  
name prefixes instead of path prefixes.  For example, if you used to  
"addHelperPath('Vendor/App/Helper')", you would now "addHelperClass 
('Vendor_App_Helper')".  Then helpers of that class will be used  
before the Solar_View_Helper classes are used.

Also in line with this, the Solar_View 'helper_path' config key has  
been renamed 'helper_class', and a new Solar_Controller_Page config  
key 'helper_class' has been added so that page controllers know where  
helpers are (this is to support view helpers attached to layouts).

Finally, Solar_Test_Suite usage has changed a bit.  Instead of  
setting a 'sub' key to specify that you want to run a sub-series of  
class tests, you specify that same value when calling  
Solar_Test_Suite::run($sub).

As usual, please review the change notes for fuller descriptions.


Future Plans
------------

The next release will concentrate on feature requests, and (sorry!)  
another class reorganization so as to be more consistent with pattern- 
based names, and to reduce the depth of some parts of the hierarchy.

None of the reorganizational changes should require more than a  
simple search-and-replace on the existing code base when complete.   
For example, Solar_Sql_Driver will become Solar_Sql_Adapter,  
Solar_Cache_File will become Solar_Cache_Adapter_File, and so on.

The User subclasses (Auth, Role, Access) will come to the top of the  
hierarchy, so Solar_User_Auth will become Solar_Auth, and the  
Solar_User_Auth_Driver files will become Solar_Auth_Adapter files.

There are other change ideas too; you can see those in the todo file  
here:

     http://solarphp.com/svn/todo/todo.txt


As always, if there are questions, comments, or concerns, please let  
me know at your convenience, and thank you for using Solar.


-- pmj


More information about the solar-talk mailing list