

Ask HN: Examples of beautifully designed php applications - apsurd

Can anyone recommend a great example of beautifully/elegantly designed php application.<p>Disclaimer:<p>I can't comprehend how wordpress, joomla, drupal, xoops, or oscommerce can be considered good code. Mainly because they don't employ MVC and I love MVC.<p>Why MVC?<p>I think it makes an application dead simple and beautifully elegant. One of the biggest reasons being clean and descriptive urls. MVC essentially turns the browser bar into a command line.<p>## www.mysite.com/store/cart/show_items<p>I love the clarity you get from being able to access methods from a controller in such a ridiculously clean way. This also eliminates dirty/cryptic urls. Why are "clean urls" still an <i>option</i>?<p>Then there's "include/require". MVC (Kohana) elimites includes from your app logic. Wheras non mvc projects (like the ones mentioned above) have include/require absolutely plastered throughout every function of their code. Needless to say it makes reading source impossible.<p>It's impossible (for me at least) to guage the scope and bearings within a non-MVC system.<p>Am I alone on this? Is there something I'm missing? Are there pros to NOT using MVC?
I learned coding <i>through</i> learning kohana/MVC so it's all I know. But I'm ready to learn so I am looking forward to great examples of well designed applications, MVC or not, thanks!
======
SwellJoe
Your definition of beautiful code and mine differ. I don't care which
buzzwords the code is compliant with. I care that it is easy to modify, easy
to read, well-documented, and well-maintained. Drupal is most of these things,
Joomla is none of them. Wordpress is a mixed bag. OSCommerce has had too many
maintainers with too little experience get hands on the codebase over the
years.

I agree with you on the insanity of URLs in a lot of applications...but they
are an _option_ because many Open Source projects want to run on as many
systems as possible, and not all deployments have permissions needed to
rewrite URLs or to run standalone application servers and setup proxy rules.
Drupal, at least, makes the URL mapping completely painless. Joomla has
perhaps the worst native URLs I've ever seen
(index.php?option=com_ugly&task=view&id=2985&Itemid=33), and the URL mapping
modules do hateful things and end up generating an infinite stream of
different URLs depending on how someone got to the page. When we moved from
Joomla to Drupal, we literally shed a couple hundred thousand URLs, without
losing any content (we actually have about 50,000 individual pages, counting
forums, issues, and docs).

But, you're conflating two orthogonal issues by assuming that MVC naturally
maps to good URLs while other approaches do not.

------
noodle
out of curiosity, if you learned coding through MVC-based frameworks and its
all you know, why do you feel qualified to make judgment calls on wordpress,
joomla, etc.? how can you truly say that you're intelligently choosing MVC
because it is the best option when you've not done any development under other
design patterns?

~~~
apsurd
Well hence the question. I am anxious to hear from people better than myself.
I tried come off as un-snide as possible. The disclaimer is about why I think
MVC makes code easier to read and why so far all the open source php projects
I've come across, have been hard (for me) to understand, digest, and of
course, develop for, and it just so happens I see none of the things I deem
"simple and clear" as when I do when I'm working with MVC.

I'm obviously drawing conclusions relative to my personal experiences, and I
fully acknowledge that those experiences are limited, but what else (aside
from posting this thread, which I've done) can I do?

~~~
noodle
MVC has little to nothing to do with how clearly code is written.

i've seen my fair share of barely readable MVC source.

MVC helps, MVC is a useful tool, but MVC is not the sole reason why good code
is good code; MVC is not the Kwisatz Haderach

~~~
apsurd
Point taken. Thank you for your insight. Do you have any projects you'd
recommend as good code?

