Solar 1.0.0alpha3 released

View: New views
9 Messages — Rating Filter:   Alert me  

Solar 1.0.0alpha3 released

by Paul M Jones-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,

It is with great pleasure that I announce the release of Solar  
1.0.0alpha3.  I have not updated the .com website yet (will do that  
tomorrow), but you can download the 1.0.0alpha3 release from <http://solarphp.net 
 > right now.  An alpha3 system is also in place at <http://svn.solarphp.com/system/download 
 >.

As noted earlier, this will be the last alpha release of Solar; I  
expect to have a beta released within the next 8 weeks or so.

The remainder of this email is planned as a blog post for after I  
update the website.

Thanks, everyone, for your patient assistance over the past year.  :-)


* * *


I can't believe that almost a whole year has passed since alpha2 was  
released. In that time we have made some significant changes to how  
some major Solar components work.  You can read the class-by-class  
[change notes][] if you like, but after a year, there's quite a lot to  
wade through.  To point out the highlights, I'll give a broad overview  
in this post.

Before I do that, though, I would like to thank one person in  
particular who made this release what it is: [Jeff Moore](http://www.procata.com/blog/ 
) of [Mashery](http://mashery.com). Jeff has done more on this release  
than any other contribitor, making huge strides in the Model and other  
packages through his code, reporting, revisions, and (admittedly)  
nagging of me to make things better.  Thank you, Jeff, for everything  
you have done to make this release possible.

There are lots of others who contributed in important ways, most of  
whom are noted in the change log with their specific achievements:

- Jon Elofson
- Anthony Gentile
- Robert Gonzalez
- Tomasz Holeksa
- Antti Holvikari
- Ray Kolbe
- Kalkin
- Dmytro Konstantinov
- Clay Loveless
- Rodrigo Moraes
- Nicholas Sloan
- Jeff Surgeson
- Richard Thomas
- Matthew Turland
- Robert Treat
- Kevin Wagner

Thanks, guys, for all your effort and attention.  The project is  
better for your having been involved.  :-)


Model Changes
=============

Nothing has been lost. Solar models still:

- recognize has-one, belongs-to, and has-many relationships;
- allow eager- and lazy-fetching of related records;
- support [SingleTableInheritance][];
- save only the changed data, not the whole record;
- perform data filtering at save() time; and
- generate automatic form hints from the table columns.

However, much has been added, including performance enhancements  
across the board.  Below are only a few of the highlights; for a full  
rundown, please review the [change notes][].


Less-Active Table, More-Active Record
-------------------------------------

Previously, the table-based [Solar_Sql_Model][] class retained a lot  
of [TableModule][]-like behavior from its predecessors  
(Solar_Sql_Table, Solar_Sql_Entity, [PEAR DB_Table][], etc).  When  
combined with the [Solar_Sql_Model_Record][] logic for inserts and  
updates, it became difficult to track which parts were doing what.

To remedy this, the Model class has had most of the manipulation logic  
stripped out of its insert/update/etc methods, and all of that special  
logic has been placed in the Record class.  That makes the Model more  
like a [TableDataGateway][], in that it will insert and update the  
data you give it without attempt to massage it; as a corollary, the  
Record becomes more like an [ActiveRecord][] implementation.


Many-to-Many
------------

We have added "has-many-through" relationship descriptors.  This means  
that models now recognize many-to-many relationships through an  
explicit association model.


Saving Related Records
----------------------

When you save a record, it now wires up all the related record IDs for  
you, setting all the necessary primary key information automatically.  
In partcular, saving a "has-many-through" will wire up not only the  
related records on the foreign side of the association table, but also  
the related records on the association table itself.

For the "has" relationships, it then saves each of the related records  
and collections for you:

- has-one records are saved as they are;
- has-many collections are saved as they are; and
- has-many-through collections are checked for additions and
   removals against the association table, and are saved or deleted
   as necessary; this includes saving the records on the foreign side
   of the association table

Note that automatic saving of relateds **does not** occur on "belongs-
to" relationships.  Those you still have to have on your own, because  
they are necessarily precursors to the existence of the current record  
or collection.


Eager Fetching
--------------

Eager fetching performance has been improved in many common cases,  
allowing dual strategies for relating back to native record sets and  
dual strategies for merging related records back into the native  
record set.  As before, eager fetching avoids the 1+N pitfall,  
generating only one additional query per relationship (*not* one per  
record in the native result set).

Additionally, it is now possible to chain eager fetches.  That is,  
eager-fetched records can themselves eager-fetch their own related  
records, all with a single call to the Model fetch*() method.


XML-Struct Columns
------------------

Solar models support automatic application of serialize() and  
unserialize() to columns in the [$_serialize_cols][] model property.  
We now add to this the ability to serialize and unserialize basic XML-
formatted data as well, through the use of the new [Solar_Struct_Xml]
[] class.  (N.b.: XML structs do not support attributes.)

Among other things, this means you can store simplified XML data in a  
column, and database engines capable of searching it, can search it.  
You can manipulate that data as XML data in PHP as well via the XML-
struct mechanisms.


Non-Model Changes
=================


Arch-Class
----------

The [Solar][] arch-class has fewer static methods in it; collections  
of related methods have been grouped into their own classes (e.g.,  
[Solar_Config][]).


Construction
------------

The Solar_Base class, from which all other Solar classes extend, now  
has a more pluggable construction and configuration process.  Hooks  
include:

- `_preConfig()` to set up the object before configuration
- `_postConfig()` to modify the object after configuration
- `_postConstruct()` to complete object construction

This means you never need to override a Solar constructor; instead,  
place your construction logic in the applicable hook method.


Page Controllers
----------------

The [Solar_Controller_Page][] class now comes with a default layout  
and views, along with added error handling methods, making it more  
useful as a base page controller class in its own right. (Previously,  
one had to extend [Solar_App_Base][], or create a base app of one's  
own, to get these basic defaults.)

One thing has been removed: recognition of page-level view helpers.  
In theory, these seemed like they might be useful.  However, in  
practice, they were rarely if ever needed.  Vendor-level helpers are  
now the first place the views will look.


Lazy Sessions
-------------

The [Solar_Session][] class now supports "lazy" sessions.  Previously,  
it would start a sesssion automatically at instantiation time.  Now,  
it starts a session only when ...

1. A PHP session cookie already exists, or
2. You call one of the `set*()` methods to store a value

This means that the session object can be available at any time, but  
won't invoke any session-based overhead until it is actually needed.


Make-Vendor and Model-Based Apps
--------------------------------

The [make-vendor][] command now generates a special page controller  
called `{Vendor}_Controller_Model`, which houses all the code for a  
minimal BREAD-S (browse, read, edit, add, delete, and search)  
application based on a model.

Previously, [make-app][] would generate the BREAD code fresh in each  
new class, but when you build mutiple model-based apps, you would end  
up with a lot of code duplication.  The new approach removes that  
duplication entirely. This means that `make-app --model-name` will now  
create app classes that extend from `{Vendor}_Controller_Model`.


Compound Selects
----------------

[Solar_Sql_Adapter][] and [Solar_Sql_Select][] now support UNION and  
UNION ALL query construction, with the related LIMIT and ORDER  
components of those kinds of queries.


Forms
-----

The [Solar_View_Helper_Form][] view helper for forms now supports  
different kinds of decoration: as  definition list, as a table, or as  
"plain" (no surrounding markup).  The helper itself has been  
significantly refactored so that the internal logic is easier to  
follow, and support logic has been extracted into separate classes  
when possible.


Much More
=========

There is a lot more to be had.  Take a look at the [Getting Started][]  
documentation, then spend some time with these blog entries from Solar  
users:

- <http://elofson.ca/2009/03/getting-started-with-solar>
- <http://elofson.ca/2009/03/the-solar-configuration-file>
- <http://elofson.ca/2009/03/screen-cast-installing-and-setting-up-the-solar-system 
 >
- <http://elofson.ca/2009/03/a-simple-solar-application>
- <http://elofson.ca/2009/03/screen-cast-creating-a-simple-solar-application 
 >
- <http://elofson.ca/2009/04/views-layouts-and-locales>
- <http://elofson.ca/2009/04/a-real-solar-application>
- <http://elofson.ca/2009/06/view-helpers>
- <http://elofson.ca/2009/06/layouts>
- <http://elofson.ca/2009/06/using-solar-access-control>
- <http://www.phpjack.com/content/quick-taste-solar-framework-model-flexability-and-power 
 >
- <http://www.phpjack.com/content/solar-articles-around-web>
- <http://www.phpjack.com/content/solar-tips-1>
- <http://www.phpjack.com/content/solar-framework-adds-firebug-support-thanks-firephp 
 >
- <http://www.phpjack.com/content/using-jquery-solar>
- <http://solarphp.com/blog/read/8-using-registry-set-to-auto-register-objects 
 >
- <http://solarphp.com/blog/read/12-authentication-using-my-sql>
- <http://solarphp.com/blog/read/19-adapter-for-master-slave-my-sql-setups 
 >
- <http://solarphp.com/blog/read/27-solar-cli-getting-started>
- <http://solarphp.com/blog/read/28-solar-cli-make-vendor>
- <http://solarphp.com/blog/read/29-solar-cli-make-model>
- <http://agentile.com/view/28/solarphp-on-mosso>


* * *

[$_serialize_cols]:         http://solarphp.com/class/Solar_Sql_Model::$_serialize_cols
[ActiveRecord]:             http://martinfowler.com/eaaCatalog/activeRecord.html
[SingleTableInheritance]:   http://martinfowler.com/eaaCatalog/singleTableInheritance.html
[Solar]:                    http://solarphp.com/class/Solar
[Solar_App_Base]:           http://solarphp.com/class/Solar_App_Base
[Solar_Base]:               http://solarphp.com/class/Solar_Base
[Solar_Controller_Page]:    http://solarphp.com/class/Solar_Controller_Page
[Solar_Session]:            http://solarphp.com/class/Solar_Session
[Solar_Sql_Adapter]:        http://solarphp.com/class/Solar_Sql_Adapter
[Solar_Sql_Model]:          http://solarphp.com/class/Solar_Sql_Model
[Solar_Sql_Model_Record]:   http://solarphp.com/class/Solar_Sql_Model_Record
[Solar_Sql_Select]:         http://solarphp.com/class/Solar_Sql_Select
[Solar_Struct_Xml]:         http://solarphp.com/class/Solar_Xml_Struct
[Solar_View_Helper_Form]:   http://solarphp.com/class/Solar_View_Helper_Form
[TableDataGateway]:         http://martinfowler.com/eaaCatalog/tableDataGateway.html
[TableModule]:              http://martinfowler.com/eaaCatalog/tableModule.html
[make-app]:                 http://solarphp.com/class/Solar_Cli_MakeApp
[make-vendor]:              http://solarphp.com/class/Solar_Cli_MakeVendor
[Getting Started]:          http://solarphp.org/manual:getting_started:first_run
[change notes]:             http://svn.solarphp.com/core/info/1.0.0alpha3/notes
[PEAR DB_Table]:            http://pear.php.net/DB_Table


--

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




_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Jon Elofson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

This is so great! I have just grabbed myself a delicious, life-giving
beer and am raising my glass to Paul and all those who support Solar.
Cheers everyone!

Jon

On 9/10/09, Paul M Jones <pmjones@...> wrote:

> Hi all,
>
> It is with great pleasure that I announce the release of Solar
> 1.0.0alpha3.  I have not updated the .com website yet (will do that
> tomorrow), but you can download the 1.0.0alpha3 release from
> <http://solarphp.net
>  > right now.  An alpha3 system is also in place at
> <http://svn.solarphp.com/system/download
>  >.
>
> As noted earlier, this will be the last alpha release of Solar; I
> expect to have a beta released within the next 8 weeks or so.
>
> The remainder of this email is planned as a blog post for after I
> update the website.
>
> Thanks, everyone, for your patient assistance over the past year.  :-)
>
>
> * * *
>
>
> I can't believe that almost a whole year has passed since alpha2 was
> released. In that time we have made some significant changes to how
> some major Solar components work.  You can read the class-by-class
> [change notes][] if you like, but after a year, there's quite a lot to
> wade through.  To point out the highlights, I'll give a broad overview
> in this post.
>
> Before I do that, though, I would like to thank one person in
> particular who made this release what it is: [Jeff
> Moore](http://www.procata.com/blog/
> ) of [Mashery](http://mashery.com). Jeff has done more on this release
> than any other contribitor, making huge strides in the Model and other
> packages through his code, reporting, revisions, and (admittedly)
> nagging of me to make things better.  Thank you, Jeff, for everything
> you have done to make this release possible.
>
> There are lots of others who contributed in important ways, most of
> whom are noted in the change log with their specific achievements:
>
> - Jon Elofson
> - Anthony Gentile
> - Robert Gonzalez
> - Tomasz Holeksa
> - Antti Holvikari
> - Ray Kolbe
> - Kalkin
> - Dmytro Konstantinov
> - Clay Loveless
> - Rodrigo Moraes
> - Nicholas Sloan
> - Jeff Surgeson
> - Richard Thomas
> - Matthew Turland
> - Robert Treat
> - Kevin Wagner
>
> Thanks, guys, for all your effort and attention.  The project is
> better for your having been involved.  :-)
>
>
> Model Changes
> =============
>
> Nothing has been lost. Solar models still:
>
> - recognize has-one, belongs-to, and has-many relationships;
> - allow eager- and lazy-fetching of related records;
> - support [SingleTableInheritance][];
> - save only the changed data, not the whole record;
> - perform data filtering at save() time; and
> - generate automatic form hints from the table columns.
>
> However, much has been added, including performance enhancements
> across the board.  Below are only a few of the highlights; for a full
> rundown, please review the [change notes][].
>
>
> Less-Active Table, More-Active Record
> -------------------------------------
>
> Previously, the table-based [Solar_Sql_Model][] class retained a lot
> of [TableModule][]-like behavior from its predecessors
> (Solar_Sql_Table, Solar_Sql_Entity, [PEAR DB_Table][], etc).  When
> combined with the [Solar_Sql_Model_Record][] logic for inserts and
> updates, it became difficult to track which parts were doing what.
>
> To remedy this, the Model class has had most of the manipulation logic
> stripped out of its insert/update/etc methods, and all of that special
> logic has been placed in the Record class.  That makes the Model more
> like a [TableDataGateway][], in that it will insert and update the
> data you give it without attempt to massage it; as a corollary, the
> Record becomes more like an [ActiveRecord][] implementation.
>
>
> Many-to-Many
> ------------
>
> We have added "has-many-through" relationship descriptors.  This means
> that models now recognize many-to-many relationships through an
> explicit association model.
>
>
> Saving Related Records
> ----------------------
>
> When you save a record, it now wires up all the related record IDs for
> you, setting all the necessary primary key information automatically.
> In partcular, saving a "has-many-through" will wire up not only the
> related records on the foreign side of the association table, but also
> the related records on the association table itself.
>
> For the "has" relationships, it then saves each of the related records
> and collections for you:
>
> - has-one records are saved as they are;
> - has-many collections are saved as they are; and
> - has-many-through collections are checked for additions and
>    removals against the association table, and are saved or deleted
>    as necessary; this includes saving the records on the foreign side
>    of the association table
>
> Note that automatic saving of relateds **does not** occur on "belongs-
> to" relationships.  Those you still have to have on your own, because
> they are necessarily precursors to the existence of the current record
> or collection.
>
>
> Eager Fetching
> --------------
>
> Eager fetching performance has been improved in many common cases,
> allowing dual strategies for relating back to native record sets and
> dual strategies for merging related records back into the native
> record set.  As before, eager fetching avoids the 1+N pitfall,
> generating only one additional query per relationship (*not* one per
> record in the native result set).
>
> Additionally, it is now possible to chain eager fetches.  That is,
> eager-fetched records can themselves eager-fetch their own related
> records, all with a single call to the Model fetch*() method.
>
>
> XML-Struct Columns
> ------------------
>
> Solar models support automatic application of serialize() and
> unserialize() to columns in the [$_serialize_cols][] model property.
> We now add to this the ability to serialize and unserialize basic XML-
> formatted data as well, through the use of the new [Solar_Struct_Xml]
> [] class.  (N.b.: XML structs do not support attributes.)
>
> Among other things, this means you can store simplified XML data in a
> column, and database engines capable of searching it, can search it.
> You can manipulate that data as XML data in PHP as well via the XML-
> struct mechanisms.
>
>
> Non-Model Changes
> =================
>
>
> Arch-Class
> ----------
>
> The [Solar][] arch-class has fewer static methods in it; collections
> of related methods have been grouped into their own classes (e.g.,
> [Solar_Config][]).
>
>
> Construction
> ------------
>
> The Solar_Base class, from which all other Solar classes extend, now
> has a more pluggable construction and configuration process.  Hooks
> include:
>
> - `_preConfig()` to set up the object before configuration
> - `_postConfig()` to modify the object after configuration
> - `_postConstruct()` to complete object construction
>
> This means you never need to override a Solar constructor; instead,
> place your construction logic in the applicable hook method.
>
>
> Page Controllers
> ----------------
>
> The [Solar_Controller_Page][] class now comes with a default layout
> and views, along with added error handling methods, making it more
> useful as a base page controller class in its own right. (Previously,
> one had to extend [Solar_App_Base][], or create a base app of one's
> own, to get these basic defaults.)
>
> One thing has been removed: recognition of page-level view helpers.
> In theory, these seemed like they might be useful.  However, in
> practice, they were rarely if ever needed.  Vendor-level helpers are
> now the first place the views will look.
>
>
> Lazy Sessions
> -------------
>
> The [Solar_Session][] class now supports "lazy" sessions.  Previously,
> it would start a sesssion automatically at instantiation time.  Now,
> it starts a session only when ...
>
> 1. A PHP session cookie already exists, or
> 2. You call one of the `set*()` methods to store a value
>
> This means that the session object can be available at any time, but
> won't invoke any session-based overhead until it is actually needed.
>
>
> Make-Vendor and Model-Based Apps
> --------------------------------
>
> The [make-vendor][] command now generates a special page controller
> called `{Vendor}_Controller_Model`, which houses all the code for a
> minimal BREAD-S (browse, read, edit, add, delete, and search)
> application based on a model.
>
> Previously, [make-app][] would generate the BREAD code fresh in each
> new class, but when you build mutiple model-based apps, you would end
> up with a lot of code duplication.  The new approach removes that
> duplication entirely. This means that `make-app --model-name` will now
> create app classes that extend from `{Vendor}_Controller_Model`.
>
>
> Compound Selects
> ----------------
>
> [Solar_Sql_Adapter][] and [Solar_Sql_Select][] now support UNION and
> UNION ALL query construction, with the related LIMIT and ORDER
> components of those kinds of queries.
>
>
> Forms
> -----
>
> The [Solar_View_Helper_Form][] view helper for forms now supports
> different kinds of decoration: as  definition list, as a table, or as
> "plain" (no surrounding markup).  The helper itself has been
> significantly refactored so that the internal logic is easier to
> follow, and support logic has been extracted into separate classes
> when possible.
>
>
> Much More
> =========
>
> There is a lot more to be had.  Take a look at the [Getting Started][]
> documentation, then spend some time with these blog entries from Solar
> users:
>
> - <http://elofson.ca/2009/03/getting-started-with-solar>
> - <http://elofson.ca/2009/03/the-solar-configuration-file>
> -
> <http://elofson.ca/2009/03/screen-cast-installing-and-setting-up-the-solar-system
>  >
> - <http://elofson.ca/2009/03/a-simple-solar-application>
> - <http://elofson.ca/2009/03/screen-cast-creating-a-simple-solar-application
>  >
> - <http://elofson.ca/2009/04/views-layouts-and-locales>
> - <http://elofson.ca/2009/04/a-real-solar-application>
> - <http://elofson.ca/2009/06/view-helpers>
> - <http://elofson.ca/2009/06/layouts>
> - <http://elofson.ca/2009/06/using-solar-access-control>
> -
> <http://www.phpjack.com/content/quick-taste-solar-framework-model-flexability-and-power
>  >
> - <http://www.phpjack.com/content/solar-articles-around-web>
> - <http://www.phpjack.com/content/solar-tips-1>
> -
> <http://www.phpjack.com/content/solar-framework-adds-firebug-support-thanks-firephp
>  >
> - <http://www.phpjack.com/content/using-jquery-solar>
> -
> <http://solarphp.com/blog/read/8-using-registry-set-to-auto-register-objects
>  >
> - <http://solarphp.com/blog/read/12-authentication-using-my-sql>
> - <http://solarphp.com/blog/read/19-adapter-for-master-slave-my-sql-setups
>  >
> - <http://solarphp.com/blog/read/27-solar-cli-getting-started>
> - <http://solarphp.com/blog/read/28-solar-cli-make-vendor>
> - <http://solarphp.com/blog/read/29-solar-cli-make-model>
> - <http://agentile.com/view/28/solarphp-on-mosso>
>
>
> * * *
>
> [$_serialize_cols]:
> http://solarphp.com/class/Solar_Sql_Model::$_serialize_cols
> [ActiveRecord]:
> http://martinfowler.com/eaaCatalog/activeRecord.html
> [SingleTableInheritance]:
> http://martinfowler.com/eaaCatalog/singleTableInheritance.html
> [Solar]:                    http://solarphp.com/class/Solar
> [Solar_App_Base]:           http://solarphp.com/class/Solar_App_Base
> [Solar_Base]:               http://solarphp.com/class/Solar_Base
> [Solar_Controller_Page]:    http://solarphp.com/class/Solar_Controller_Page
> [Solar_Session]:            http://solarphp.com/class/Solar_Session
> [Solar_Sql_Adapter]:        http://solarphp.com/class/Solar_Sql_Adapter
> [Solar_Sql_Model]:          http://solarphp.com/class/Solar_Sql_Model
> [Solar_Sql_Model_Record]:   http://solarphp.com/class/Solar_Sql_Model_Record
> [Solar_Sql_Select]:         http://solarphp.com/class/Solar_Sql_Select
> [Solar_Struct_Xml]:         http://solarphp.com/class/Solar_Xml_Struct
> [Solar_View_Helper_Form]:   http://solarphp.com/class/Solar_View_Helper_Form
> [TableDataGateway]:
> http://martinfowler.com/eaaCatalog/tableDataGateway.html
> [TableModule]:
> http://martinfowler.com/eaaCatalog/tableModule.html
> [make-app]:                 http://solarphp.com/class/Solar_Cli_MakeApp
> [make-vendor]:              http://solarphp.com/class/Solar_Cli_MakeVendor
> [Getting Started]:
> http://solarphp.org/manual:getting_started:first_run
> [change notes]:
> http://svn.solarphp.com/core/info/1.0.0alpha3/notes
> [PEAR DB_Table]:            http://pear.php.net/DB_Table
>
>
> --
>
> Paul M. Jones
> http://paul-m-jones.com/
>
>
>
>
> _______________________________________________
> Solar-talk mailing list
> Solar-talk@...
> http://mailman-mail5.webfaction.com/listinfo/solar-talk
>
_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Paul M Jones-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sep 10, 2009, at 20:43 , Jon Elofson wrote:

> This is so great! I have just grabbed myself a delicious, life-giving
> beer and am raising my glass to Paul and all those who support Solar.
> Cheers everyone!

/me raises martini glass in response

Cheers!  :-)



--

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




_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Anthony Gentile :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Cheers! A glass of wine, prosciutto, bread and cheese await you in san miguel!

Anthony Gentile


On Thu, Sep 10, 2009 at 8:45 PM, Paul M Jones <pmjones@...> wrote:
On Sep 10, 2009, at 20:43 , Jon Elofson wrote:

> This is so great! I have just grabbed myself a delicious, life-giving
> beer and am raising my glass to Paul and all those who support Solar.
> Cheers everyone!

/me raises martini glass in response

Cheers!  :-)



--

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




_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk


_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Robert Gonzalez-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Here here! Drinks all around!

Thank you Paul, and all the contributors, for building quite possibly
the most elegant and well thought out collections of object oriented
PHP available today. It is a masterpiece and a testament to your hard
work, diligence and intelligence.

On Thursday, September 10, 2009, Anthony Gentile <asgentile@...> wrote:

> Cheers! A glass of wine, prosciutto, bread and cheese await you in san miguel!
> Anthony Gentile
>
>
> On Thu, Sep 10, 2009 at 8:45 PM, Paul M Jones <pmjones@...> wrote:
>
>
> On Sep 10, 2009, at 20:43 , Jon Elofson wrote:
>
>> This is so great! I have just grabbed myself a delicious, life-giving
>> beer and am raising my glass to Paul and all those who support Solar.
>> Cheers everyone!
>
> /me raises martini glass in response
>
> Cheers!  :-)
>
>
>
> --
>
> Paul M. Jones
> http://paul-m-jones.com/
>
>
>
>
> _______________________________________________
> Solar-talk mailing list
> Solar-talk@...
> http://mailman-mail5.webfaction.com/listinfo/solar-talk
>
>

--

Robert Gonzalez
http://www.robert-gonzalez.com
_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Jeff Surgeson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> Here here! Drinks all around!

khuleka [hu le ga]  
for the normal people, [salute] from Africa

Jeff Surgeson
South Africa
_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Edwin F. Lopez A. :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Salud!!!

(Cheers) From Colombia!!. Thank you all people. This is just the
beggining of Good Things (TM).
:-)
____________________________
Edwin F. López A.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Raymond Kolbe :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Cheers for sure! I raise my IPA to you and everyone who has contributed
to the Solar project ;-)

Raymond Kolbe

Paul M Jones wrote:

> Hi all,
>
> It is with great pleasure that I announce the release of Solar  
> 1.0.0alpha3.  I have not updated the .com website yet (will do that  
> tomorrow), but you can download the 1.0.0alpha3 release from <http://solarphp.net 
>  > right now.  An alpha3 system is also in place at <http://svn.solarphp.com/system/download 
>  >.
>
> As noted earlier, this will be the last alpha release of Solar; I  
> expect to have a beta released within the next 8 weeks or so.
>
> The remainder of this email is planned as a blog post for after I  
> update the website.
>
> Thanks, everyone, for your patient assistance over the past year.  :-)
>
>
> * * *
>
>
> I can't believe that almost a whole year has passed since alpha2 was  
> released. In that time we have made some significant changes to how  
> some major Solar components work.  You can read the class-by-class  
> [change notes][] if you like, but after a year, there's quite a lot to  
> wade through.  To point out the highlights, I'll give a broad overview  
> in this post.
>
> Before I do that, though, I would like to thank one person in  
> particular who made this release what it is: [Jeff Moore](http://www.procata.com/blog/ 
> ) of [Mashery](http://mashery.com). Jeff has done more on this release  
> than any other contribitor, making huge strides in the Model and other  
> packages through his code, reporting, revisions, and (admittedly)  
> nagging of me to make things better.  Thank you, Jeff, for everything  
> you have done to make this release possible.
>
> There are lots of others who contributed in important ways, most of  
> whom are noted in the change log with their specific achievements:
>
> - Jon Elofson
> - Anthony Gentile
> - Robert Gonzalez
> - Tomasz Holeksa
> - Antti Holvikari
> - Ray Kolbe
> - Kalkin
> - Dmytro Konstantinov
> - Clay Loveless
> - Rodrigo Moraes
> - Nicholas Sloan
> - Jeff Surgeson
> - Richard Thomas
> - Matthew Turland
> - Robert Treat
> - Kevin Wagner
>
> Thanks, guys, for all your effort and attention.  The project is  
> better for your having been involved.  :-)
>
>
> Model Changes
> =============
>
> Nothing has been lost. Solar models still:
>
> - recognize has-one, belongs-to, and has-many relationships;
> - allow eager- and lazy-fetching of related records;
> - support [SingleTableInheritance][];
> - save only the changed data, not the whole record;
> - perform data filtering at save() time; and
> - generate automatic form hints from the table columns.
>
> However, much has been added, including performance enhancements  
> across the board.  Below are only a few of the highlights; for a full  
> rundown, please review the [change notes][].
>
>
> Less-Active Table, More-Active Record
> -------------------------------------
>
> Previously, the table-based [Solar_Sql_Model][] class retained a lot  
> of [TableModule][]-like behavior from its predecessors  
> (Solar_Sql_Table, Solar_Sql_Entity, [PEAR DB_Table][], etc).  When  
> combined with the [Solar_Sql_Model_Record][] logic for inserts and  
> updates, it became difficult to track which parts were doing what.
>
> To remedy this, the Model class has had most of the manipulation logic  
> stripped out of its insert/update/etc methods, and all of that special  
> logic has been placed in the Record class.  That makes the Model more  
> like a [TableDataGateway][], in that it will insert and update the  
> data you give it without attempt to massage it; as a corollary, the  
> Record becomes more like an [ActiveRecord][] implementation.
>
>
> Many-to-Many
> ------------
>
> We have added "has-many-through" relationship descriptors.  This means  
> that models now recognize many-to-many relationships through an  
> explicit association model.
>
>
> Saving Related Records
> ----------------------
>
> When you save a record, it now wires up all the related record IDs for  
> you, setting all the necessary primary key information automatically.  
> In partcular, saving a "has-many-through" will wire up not only the  
> related records on the foreign side of the association table, but also  
> the related records on the association table itself.
>
> For the "has" relationships, it then saves each of the related records  
> and collections for you:
>
> - has-one records are saved as they are;
> - has-many collections are saved as they are; and
> - has-many-through collections are checked for additions and
>    removals against the association table, and are saved or deleted
>    as necessary; this includes saving the records on the foreign side
>    of the association table
>
> Note that automatic saving of relateds **does not** occur on "belongs-
> to" relationships.  Those you still have to have on your own, because  
> they are necessarily precursors to the existence of the current record  
> or collection.
>
>
> Eager Fetching
> --------------
>
> Eager fetching performance has been improved in many common cases,  
> allowing dual strategies for relating back to native record sets and  
> dual strategies for merging related records back into the native  
> record set.  As before, eager fetching avoids the 1+N pitfall,  
> generating only one additional query per relationship (*not* one per  
> record in the native result set).
>
> Additionally, it is now possible to chain eager fetches.  That is,  
> eager-fetched records can themselves eager-fetch their own related  
> records, all with a single call to the Model fetch*() method.
>
>
> XML-Struct Columns
> ------------------
>
> Solar models support automatic application of serialize() and  
> unserialize() to columns in the [$_serialize_cols][] model property.  
> We now add to this the ability to serialize and unserialize basic XML-
> formatted data as well, through the use of the new [Solar_Struct_Xml]
> [] class.  (N.b.: XML structs do not support attributes.)
>
> Among other things, this means you can store simplified XML data in a  
> column, and database engines capable of searching it, can search it.  
> You can manipulate that data as XML data in PHP as well via the XML-
> struct mechanisms.
>
>
> Non-Model Changes
> =================
>
>
> Arch-Class
> ----------
>
> The [Solar][] arch-class has fewer static methods in it; collections  
> of related methods have been grouped into their own classes (e.g.,  
> [Solar_Config][]).
>
>
> Construction
> ------------
>
> The Solar_Base class, from which all other Solar classes extend, now  
> has a more pluggable construction and configuration process.  Hooks  
> include:
>
> - `_preConfig()` to set up the object before configuration
> - `_postConfig()` to modify the object after configuration
> - `_postConstruct()` to complete object construction
>
> This means you never need to override a Solar constructor; instead,  
> place your construction logic in the applicable hook method.
>
>
> Page Controllers
> ----------------
>
> The [Solar_Controller_Page][] class now comes with a default layout  
> and views, along with added error handling methods, making it more  
> useful as a base page controller class in its own right. (Previously,  
> one had to extend [Solar_App_Base][], or create a base app of one's  
> own, to get these basic defaults.)
>
> One thing has been removed: recognition of page-level view helpers.  
> In theory, these seemed like they might be useful.  However, in  
> practice, they were rarely if ever needed.  Vendor-level helpers are  
> now the first place the views will look.
>
>
> Lazy Sessions
> -------------
>
> The [Solar_Session][] class now supports "lazy" sessions.  Previously,  
> it would start a sesssion automatically at instantiation time.  Now,  
> it starts a session only when ...
>
> 1. A PHP session cookie already exists, or
> 2. You call one of the `set*()` methods to store a value
>
> This means that the session object can be available at any time, but  
> won't invoke any session-based overhead until it is actually needed.
>
>
> Make-Vendor and Model-Based Apps
> --------------------------------
>
> The [make-vendor][] command now generates a special page controller  
> called `{Vendor}_Controller_Model`, which houses all the code for a  
> minimal BREAD-S (browse, read, edit, add, delete, and search)  
> application based on a model.
>
> Previously, [make-app][] would generate the BREAD code fresh in each  
> new class, but when you build mutiple model-based apps, you would end  
> up with a lot of code duplication.  The new approach removes that  
> duplication entirely. This means that `make-app --model-name` will now  
> create app classes that extend from `{Vendor}_Controller_Model`.
>
>
> Compound Selects
> ----------------
>
> [Solar_Sql_Adapter][] and [Solar_Sql_Select][] now support UNION and  
> UNION ALL query construction, with the related LIMIT and ORDER  
> components of those kinds of queries.
>
>
> Forms
> -----
>
> The [Solar_View_Helper_Form][] view helper for forms now supports  
> different kinds of decoration: as  definition list, as a table, or as  
> "plain" (no surrounding markup).  The helper itself has been  
> significantly refactored so that the internal logic is easier to  
> follow, and support logic has been extracted into separate classes  
> when possible.
>
>
> Much More
> =========
>
> There is a lot more to be had.  Take a look at the [Getting Started][]  
> documentation, then spend some time with these blog entries from Solar  
> users:
>
> - <http://elofson.ca/2009/03/getting-started-with-solar>
> - <http://elofson.ca/2009/03/the-solar-configuration-file>
> - <http://elofson.ca/2009/03/screen-cast-installing-and-setting-up-the-solar-system 
>  >
> - <http://elofson.ca/2009/03/a-simple-solar-application>
> - <http://elofson.ca/2009/03/screen-cast-creating-a-simple-solar-application 
>  >
> - <http://elofson.ca/2009/04/views-layouts-and-locales>
> - <http://elofson.ca/2009/04/a-real-solar-application>
> - <http://elofson.ca/2009/06/view-helpers>
> - <http://elofson.ca/2009/06/layouts>
> - <http://elofson.ca/2009/06/using-solar-access-control>
> - <http://www.phpjack.com/content/quick-taste-solar-framework-model-flexability-and-power 
>  >
> - <http://www.phpjack.com/content/solar-articles-around-web>
> - <http://www.phpjack.com/content/solar-tips-1>
> - <http://www.phpjack.com/content/solar-framework-adds-firebug-support-thanks-firephp 
>  >
> - <http://www.phpjack.com/content/using-jquery-solar>
> - <http://solarphp.com/blog/read/8-using-registry-set-to-auto-register-objects 
>  >
> - <http://solarphp.com/blog/read/12-authentication-using-my-sql>
> - <http://solarphp.com/blog/read/19-adapter-for-master-slave-my-sql-setups 
>  >
> - <http://solarphp.com/blog/read/27-solar-cli-getting-started>
> - <http://solarphp.com/blog/read/28-solar-cli-make-vendor>
> - <http://solarphp.com/blog/read/29-solar-cli-make-model>
> - <http://agentile.com/view/28/solarphp-on-mosso>
>
>
> * * *
>
> [$_serialize_cols]:         http://solarphp.com/class/Solar_Sql_Model::$_serialize_cols
> [ActiveRecord]:             http://martinfowler.com/eaaCatalog/activeRecord.html
> [SingleTableInheritance]:   http://martinfowler.com/eaaCatalog/singleTableInheritance.html
> [Solar]:                    http://solarphp.com/class/Solar
> [Solar_App_Base]:           http://solarphp.com/class/Solar_App_Base
> [Solar_Base]:               http://solarphp.com/class/Solar_Base
> [Solar_Controller_Page]:    http://solarphp.com/class/Solar_Controller_Page
> [Solar_Session]:            http://solarphp.com/class/Solar_Session
> [Solar_Sql_Adapter]:        http://solarphp.com/class/Solar_Sql_Adapter
> [Solar_Sql_Model]:          http://solarphp.com/class/Solar_Sql_Model
> [Solar_Sql_Model_Record]:   http://solarphp.com/class/Solar_Sql_Model_Record
> [Solar_Sql_Select]:         http://solarphp.com/class/Solar_Sql_Select
> [Solar_Struct_Xml]:         http://solarphp.com/class/Solar_Xml_Struct
> [Solar_View_Helper_Form]:   http://solarphp.com/class/Solar_View_Helper_Form
> [TableDataGateway]:         http://martinfowler.com/eaaCatalog/tableDataGateway.html
> [TableModule]:              http://martinfowler.com/eaaCatalog/tableModule.html
> [make-app]:                 http://solarphp.com/class/Solar_Cli_MakeApp
> [make-vendor]:              http://solarphp.com/class/Solar_Cli_MakeVendor
> [Getting Started]:          http://solarphp.org/manual:getting_started:first_run
> [change notes]:             http://svn.solarphp.com/core/info/1.0.0alpha3/notes
> [PEAR DB_Table]:            http://pear.php.net/DB_Table
>
>
>  

_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk

Re: Solar 1.0.0alpha3 released

by Paul M Jones-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Sep 11, 2009, at 21:07 , Raymond Kolbe wrote:

> Cheers for sure! I raise my IPA to you and everyone who has  
> contributed
> to the Solar project ;-)

/me raises gin and tonic in response

And to you, sir! :-)



--

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




_______________________________________________
Solar-talk mailing list
Solar-talk@...
http://mailman-mail5.webfaction.com/listinfo/solar-talk