{
    "href": "/post/2011/03/02/aura-for-php-5-3-aka-solar-2-0/",
    "relId": "2011/03/02/aura-for-php-5-3-aka-solar-2-0",
    "title": "Aura for PHP 5.3+, aka Solar 2.0",
    "author": "pmjones",
    "markup": "html",
    "tags": [
        {
            "href": "/tag/aura/",
            "relId": "aura",
            "title": "Aura",
            "author": null,
            "created": "2020-09-14 21:51:57 UTC",
            "updated": [
                "2020-09-14 21:51:57 UTC"
            ],
            "markup": "markdown"
        },
        {
            "href": "/tag/php/",
            "relId": "php",
            "title": "PHP",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/programming/",
            "relId": "programming",
            "title": "Programming",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        },
        {
            "href": "/tag/solar/",
            "relId": "solar",
            "title": "Solar",
            "author": null,
            "created": null,
            "updated": [],
            "markup": "markdown"
        }
    ],
    "created": "2011-03-02 15:19:22 UTC",
    "updated": [
        "2011-03-02 15:19:22 UTC"
    ],
    "html": "<p>Measuring from the first Subversion commit, <a href=\"http://solarphp.com\">Solar</a> was 6 years old on 14 Feb 2011. The project has come a long way since then, and has evolved from a collection of library classes with some content domain models, to a general purpose framework.</p>\n<p>Moore\u2019s Law tells us computer power doubles about every 18 months; it\u2019s how we measure generations for computers. 6 years is 4 generations, which makes Solar the equivalent of an 80 to 100 year old person.  Just like with a mature person, there is a great deal of knowledge and craft embedded in Solar, but it also still shows its roots and carries the weight of decisions from early in its life.</p>\n<p>With all that in mind, <strong>it\u2019s time to start working on Solar version two, using the formal namespaces and other features of PHP 5.3.</strong>  There are some other very significant changes on the way as well.</p>\n<p id=\"scroll_to_here\">The first change is the name of the project.  Even though Solar (the PHP 5 framework) came first, the name is too easy to confuse with Apache Solr (the search system). So, after some discussion with others, <strong>Solar v2 will be called <a href=\"https://github.com/auraphp\">Aura</a>.</strong></p>\n<p>The second change is in the fundamental organization of the project.  Solar became a full-stack framework very quickly, with all classes descending from a base class, and using and a service locator to manage dependencies. By comparison, <strong>Aura is a collection of independent library packages;</strong> it uses  no base classes, and is oriented toward a dependency injection container proper to manage dependencies. <strong>Aura also has an additional \u201csystem\u201d package that assembles those libraries into a cohesive framework</strong> (the way Solar is now).  That way, those who want to use only one or two Aura packages can do so, and developers who want a full framework can also get what they need.</p>\n<p>There are lots of other significant changes, and I expect I\u2019ll write about those in the future.  Until then, if the project sounds interesting, you can find the Github repos at <a href=\"https://github.com/auraphp\">https://github.com/auraphp</a>. Aura also has a mailing list at <a href=\"https://groups.google.com/group/auraphp\">https://groups.google.com/group/auraphp</a>, and you can join the IRC room on Freenode at <code>#auraphp</code>.</p>\n<p>Meanwhile, Solar will keep getting as much love and attention as it has over the past year or so.  But I do expect, eventually, that we will be able to extract all the best Solar behaviors to Aura.  Solar won\u2019t ever really go away (software projects almost never do), but I expect it will be eclipsed by Aura at some point in the future.</p>\n<p>You can see what Aura looks like by examining the various Aura packages already in place:</p>\n<ul>\n<li>\n<a href=\"https://github.com/auraphp/Aura.Autoload\">Aura.Autoload</a>, an autoloader package</li>\n<li>\n<a href=\"https://github.com/auraphp/Aura.Di\">Aura.Di</a>, a dependency injection container,</li>\n<li>\n<a href=\"https://github.com/auraphp/Aura.Router\">Aura.Router</a>, a web routing system,</li>\n<li>\n<a href=\"https://github.com/auraphp/Aura.Signal\">Aura.Signal</a>, a signal slots / event handler implementation,</li>\n<li>\n<a href=\"https://github.com/auraphp/Aura.Cli\">Aura.Cli</a>, a collection of command-line tools, and</li>\n<li>the <a href=\"https://github.com/auraphp/system\">system</a> package that provides a framework around the libraries</li>\n</ul>\n<p>Take a look around; I hope PHP 5.3+ developers who want independent library packages will like what they see.</p>\n"
}
