SAF is a PHP framework designed to streamline the process of web-page/site creation according to my own personal needs.
Description
Over the years, I have developed sites using quite a few different "web" frameworks. The bottom line is that none of them do what I need or want them to do. Since necessity is the mother of invention, SAF was born. I'm up to my third incarnation of the library, which has been in use privately for quite some time. Starting with v3.0, I am releasing the code under the LGPL.
SAF is designed to take a few important programming requirements and assumptions into consideration:
- The use of templates in site design is important, but SAF is a PHP framework, and PHP is a templating language. Using an addon like Smarty or the PEAR tempate library is wasteful of resources and unnecessary.
- The so-called display and content "layers" are not always as fudamentally separable as people like to think they are. Indeed, in non-enterprise environments, especially those with only a single maintener (read: "smaller" sites), it's unnecessary to compartmentalize every single thing.
- Reusable components like CSS and javascript can be embedded into HTML code easier and faster than they can be referenced externally. Embedding means fewer HTTP connections and thus faster load times.
- Database I/O abstraction layers are good only as long as they are appropriately complex. They should be functional enough, but it's unnecessary to wrap every single code function complete with overloads and huge collections of access methods.
- I can write in HTML and code in a dozen languages. Creating a markup abstraction layer or online editing system would be a waste of my time, and result in less efficient page handling.
There are some ideas here which challange current design conventions, but the important thing to remember is that SAF wasn't made to be everything to everyone. It was designed to be a light weight, flexible tool for site design that simplifies data access and runs efficiently.
It's also worth noting that SAF isn't really documented. That's because I know how it works, and I don't imagine anyone else will ever actually use it.