

PHP Fat Free Framework aka F3 - saurabh
http://fatfree.sourceforge.net/

======
jrockway
Even with intense concentration, I wasn't able to read the text on the page.
It's the lowest-contrast thing there; the YELLOW logo and "1.0" thing (and the
social bookmark links) try very hard to pull your eyes away from the text...
and they succeed. I am going to have nightmares about this site tonight, I
swear.

Also, PHP really needs something like Plack/PSGI/Rack so that you don't have
to manually reconfigure the web server for every library you want to use.

~~~
tlrobinson
_Also, PHP really needs something like Plack/PSGI/Rack so that you don't have
to manually reconfigure the web server for every library you want to use._

The Apache configuration mentioned in this article is pretty generic.

PHP has a standard HTTP interface, unlike the other languages before
WSGI/Rack/JSGI/PSGI came around. Of course, PHP's interface isn't function-
based, so you don't have the advantages of stackable middleware.

A spec closer to the *SGI's would indeed be nice.

~~~
dhotson
Actually, it's funny you should mention that. I wrote a little web server in
PHP that's basically a port of Ruby's Rack:

<http://github.com/dhotson/kelpie>

It actually works pretty well, no apache required! It's pretty fast too.. all
the init stuff you normally have to do every single request can be done once
on server startup.

I also wrote a little sinatra style framework to go on top of it:
<http://github.com/dhotson/kelpie/blob/master/demoapp.php>

Anyway, it's turning out to be a pretty fun little project. :-)

~~~
joshd
That's quite cool. That's some of the cleanest PHP I've seen.

When I've tried to write long-running applications in PHP I always get memory
leaks. How do you handle this in Kelpie?

~~~
dhotson
Thanks Josh! :-D

Yeah, it's probably going to have memory leak issues. It's pretty much
inevitable unfortunately. I've thought about having the server monitor the
memory usage and periodically respawn processes. I believe apache uses a
similar technique.

I'm open to ideas on this issue though. :-)

------
armandososa
I've done something similar, inspired by sinatra:
<http://github.com/soska/microbus> but I'm a poor self-promoter.

This is an interesting idea, but I like better my syntax though. But again,
I'm not even a real programmer.

~~~
csytan

       I'm a poor self-promoter.
       <snip> 
       But again, I'm not even a real programmer.
    

Modesty isn't very useful when promoting. Tell us why your framework is
better!

~~~
armandososa
I don't actually think it _is_ better, just different and works for me. Some
other attempts try to make PHP act like ruby or python with ugly results. What
I've tried to do here is embrace PHP 'classic' style.

    
    
      if (get('hello')){
        // do stuff
      }

------
rev087
This is exactly what I intended for my "personal framework" when I began
writing it's first version about three years ago: unintrusive (all main
functions as static methods of a single class to keep the global namespace
clean; no enforced directory structure) and lightweight (few files, few
bytes).

Too bad mine grew to become a monster, pretty much like all other popular PHP
frameworks out there. I guess simplicity really is one of the hardest features
to implement.

------
soe
the license gpl v3 for base framework is pretty limiting ... it could be a
show stopper... something like MIT or BSD would encourage people to try out...

~~~
regularfry
Really? I honestly didn't think it was a problem for web apps. What's the
issue here?

~~~
soe
gpl v3 requires code (even hosted) to be shared upon request by users

with gpl v2, it was a requirement. hence gpl v2 licensed applications such as
wordpress and drupal don't need to be shared with site users

code built upon the framework is derivation and thus, has to be licensed
accordingly

~~~
regularfry
I can't see the requirement to share code with users on request anywhere in
the GPLv3. It explicitly excludes interaction over a network in section 0:

    
    
        "To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying."
    

Are you sure you're not thinking of the Affero GPL?

------
thmz
Another framework based on MVC. But MVC is just not possible in PHP. Maybe
with Ajax it is, but mostly it is a hype people don't understand. Let Apache
(or any webserver) be the controller and you have the most lightweight
framework there is.

~~~
bruceboughton
In what way is it not possible? You can send all requests through a single
handler with .htaccess can't you?

~~~
thmz
You can, but it will not update the view directly as MVC does. You always need
to refresh the page for that. In Java or Flex (or with Ajax) the view is
updated by the model. That is MVC. In PHP this is just not possible. So imho
it is a hype word people don't understand. Most (PHP) frameworks that use
'MVC' are just more bloated than Apache + PHP (a single handler with .htaccess
could be nice!).

~~~
blasdel
MVC ≠ What your pet framework does

MVC is a _descriptive point of view_ , not a prescriptive implementation plan.
It's one of the only software idioms that's actually an Alexanderian Pattern,
unlike the vast majority of the GoF that's just reflective of language
warts/features.

There are tons of completely different ways you could describe the web as MVC:

    
    
      Model         View        Controller
      URL           Response    Request
      DB            Response    Request
      Response      Hypermedia  Sub-Requests
      LocalStorage  DOM         Javascript
      data://       JavaScript  DOM Events
      ...

~~~
thmz
I agree. But that's not the case with this PHP framework (as far as I can
tell). They use 'MVC' as structure for there code (or as you call it:
prescriptive). And then suddenly a lightweight framework is not that
lightweight anymore. So again I agree with your descriptions of the web as
MVC, but MVC in a PHP framework only... I still believe that's just a hype
word.

BTW I don't want to start a flame war about MVC. I just got some question
marks about using a PHP 'MVC' framework.

~~~
olliesaunders
Am I right in saying you think it's bloated because it's superfluous? If that
is the case, may I draw your attention to one of the most important reasons
for doing request handling within PHP: testability.

Were it not for that I would be in complete agreement with you; I have
absolutely no time for any framework that does not allow you to construct a
mock request object, throw it into the controller, and verify correctness of
the response object produced.

------
pan69
Reading through the 'Getting started', it's quite an interesting approach
actually. I might give it a go some time.

~~~
olliesaunders
What's interesting about it?

------
alinajaf
It looks like Sinatra for PHP.

