views:

5781

answers:

19

In your opinion, which PHP CMS has the best architecture? I don't care about how easy its admin panel is to use, or how many CMS features it has. Right now, I'm after how good its code is (so, please, don't even mention Drupal or Wordpress /shudder). I want to know which ones have a good, solid, OOP codebase.

Please provide as much detail as you can in your replies.

+10  A: 

I'd imagine that Expression Engine is good. I haven't used it directly, but the companies other product, Code Igniter seems very clean.

Rich Bradshaw
I was going to post that, but I forgot it's name. I'm also assuming that it's well designed and constructed, based on Code Ignitor.
Thomas Owens
Wow, I wish I could find out if it's actually built on CI or not - that would be great info to have.
Peter Bailey
It is most certainly built on CI; in fact, that's kind of an anachronism. CI is a side-effect of EE. In developing EE, Ellis developed a framework which they decided to release as CodeIgniter. CI is now maintained as its own project, however.
eyelidlessness
CI is not a CMS, it is a PHP framework. EE is a CMS however.
Adam
and EE isn't built on top of CI. EE isn't open source either, in case anyone was wondering. Although it has been announced that the next generation EE2 will be built on top of CI.
mike
In question of good OOP, Expression Engine is far from a good codebase. It ignores standards of testability.. Also global variables everywhere
Juraj Blahunka
A: 

Have a look at Jaws. Not only a CMS, but a framework, logically built and easy to extend.

Biri
+1  A: 

I used SilverStripe ones for simple page. It is a CMS including a framework to extend the basic page code. Since it uses PHP5, the code is well written and expandable OOP. I added my own code for pages in a blink and the backend makes it very easy to add those pages dynamically.

It also participated in the Google Summer of Code.

digitarald
"Since it uses PHP5, the code is well written and expandable OOP." So everything in PHP5 is well written and using OOP in a good way? That's kind of ridiculous.
chelmertz
+3  A: 

With this sort of question, assuming 50 different CMSs you will likely get 50 different answers. Most modern CMSs have put serious thought into their architecture... older ones frequently have a more "organic" structure (I'm being polite by using the "organic" bit).

Really the only way to narrow it down is to collect a list of top possibilities and dive in. Install them and try templating a page, creating a simple "hello world" plugin, maybe a simple "SELECT * FROM foo" plugin and see what works for you.

That said, I can vouch that Expression Engine (EE) is pretty good. It is from the folks that created CodeIgnitor (CI) and EE2 is in fact built on CI.

gaoshan88
+7  A: 

I have no idea, I don't do PHP any more...

But I can answer you in the negative. There's one CMS, no matter how solid it may be, that is totally impenetrable in its internals: Typo3. I've tried for weeks, but I simply couldn't find anything recognizable back from the website in the database, and in no way could I make any sense of the code structure.

bart
Yes typo3 is horrible. You can achieve anything you like, if you have a couple of years on your hands to study the thing :\
Jan Hancic
+3  A: 

Architecture-wise, ezPublish.

When I first looked into it (at the time of PHP4), it had the most sophisticated code and architecture I have ever seen built. It also leveraged PHP4 to the fullest. With recent versions they ported the code base to PHP5 (I believe utilizing their ezComponents as well) and take full advantage of all of what PHP offers.

I know that ezPublish can be a pain to use and IMHO it requires extensive customization etc., but if you are just talking architecture it's as good as it gets.

Till
though far from easy to use for an end user in it's default state. a real old style full powerful content management engine!
reefnet_alex
A: 

CodeIgniter is very very cool.. And you also have an open-source project based on CI that's even better: http://kohanaphp.com

netsuo
In case you are wondering (because I've had it happen to me before), the downvotes are most likely because neither CI nor Kohana is a CMS. I did not contribute, btw... just pointing it out.
gaoshan88
yep, both frameworks, not CMSs
handsomeGun
A: 

In the question I do not know for wath you need all that things. Drupal and Wordpress are working in millions of sites, someones in the first top 100 in visits number.

Then, what "how good its code" means? You want to modify it? You want to improve it? And the OOP Database, Do you need it? For what?

If you give more information, maybe I can make a suggestion.

Urano
+1  A: 

It all depends on how much effort you want to put into setting up the front-end design, the features/modules, and how user friendly the back-end is.

Try to avoid the PHP-Nuke/Post-Nuke series and variants. Definitely not very clean and unfortunately is mostly a collection of hacks. Granted I have dozens of sites running it that are running great, it was a real PITA to customize. (This also is from using it about 2-3 years ago, maybe they revamped)

Joomla/Mambo is pretty cool. Very Web 2.0 and has a decent community creating all sorts of modules for it. Developing modules is a little rough, at least 2-3 years ago when I worked in it. Cool deployment system and installation system for modules. Lots of companies provide templates you can download (some free) and customize, a real time saver.

If your looking to do something fully custom, then you need a PHP framework. I've been working with CI and absolutely love it. Great forums community as well, though you won't find too many download and install modules to get a CMS going, yes there's a few user authentication libraries and such, but honestly that is about it. Some great screencasts on setting up a blog and page manager which will certainly get you a step in the right direction.

Can't vouch for Zend Framework or Cake PHP, both have their merits and communities, but when I did my research CI at the time fit my development style perfectly.

Don't forget to check the licensing for the cms and frameworks you download. Just because it is free/open source, doesn't mean you can charge for it...

Adam
+10  A: 

This inquiry contains a conflicting constraint, first, it asks:

"which PHP CMS has the best architecture?"

then adds the constraint:

"I want to know which ones have a good, solid, OOP codebase."

thereby implying that the inquirer grasps tightly & stubbornly to the fallacy that only architectures containing strictly CLASS-based code & CLASSICAL INHERITANCE models are worthy of "best architecture" status (try asking "why", see how far you get); pretty myopic, but also an all-to-commonly-held position... hereby forgiven.

The best answer -- all constraints considered -- is still Drupal.

TO READ: Drupal from an Object-Oriented Perspective

It's not a conflicting constraint, it's an important one. I had already read the article you linked and I just don't care about that. I can't use the OOP I already know, I have to learn their OOP mimicking. That's the whole point: I don't want to learn a new object paradigm just to get work done.
Peter Bailey
"best architectures" are NOT constrained only to "classical (purely class-based) OOP architectures". I'd argue absolutely in favor of Drupal's architecture over code ignitor/expression engine to exhaustion, but you've made it clear you aren't willing to "learn anything new", so I suggest EE for you.
I'm willing to learn new things, but not ALL new things. When it's too far a departure from the paradigm I already use in multiple places (like OOP in PHP, JS and AS3) then it's not time well spent. Perhaps if I spent 100% of my time working with a CMS then this would have higher priority for me.
Peter Bailey
@Peter: Exactly my grip with all these projects. Some people have spent a lifetime studying and documenting good architectures and patterns, so that we could simply learn it once and code better forever, but what you often find in those cms are rogue architectures from the founders own imaginations.
mike
@mike - if you don't like it then you could always create your own CMS using whatever architecture you like. The entire project is from the founder's imagination, I see no problem with them implementing it with an architecture from their imagination as well.
Corazu
@Corazu: trust that I haven't been waiting for you to tell me. I haven't yet lived to regret it either. We both have differing opinions when it comes to PHP CMS's and we're both happy with our views, isn't life beautiful?
mike
@mike: Of course. On the other hand, I do agree with you that it'd be nice to have some standards that were adhered to. It would make working on these things a whole lot simpler. Unfortunately, reality is far more complex.
Corazu
+1  A: 

Which PHP CMS has the best architecture?

The best is the one you build to meet all your needs to the letter. :)

too many out there are 'jack of all trades' master of none.
+6  A: 

From a security perspective, I'd strongly recommend against Joomla/Mambo, at least the 3rd-party add-ons. Check out http://www.milw0rm.com, do a search on "joomla" and cower in fear.

Thanks for the info!
Peter Bailey
+1  A: 

I would say TypoLight

www.typolight.com

Here is a tutorial on how to create new modules for Typolight

hXXp://dev.typolight.org/wiki/TutorialsExtension

And the Documentation on its Data Container Array

hXXp://dev.typolight.org/wiki/TutorialsDataContainer

Ibn Saeed
A: 

I vote for ezPublish, easy to extend even without writing any PHP.

Allan
+1  A: 

My vote goes to modX, It's quite new and even then redeveloped (two versions evolution and revolution) So it doesn't suffer from the bloat unlike the more popular choices. Less plug-ins exist for it, but creating them is quite painless - the architecture is quite well designed. "MODx Revolution is an OOP Framework, built around the database ORM xPDO" http://modxcms.com/

Daniel
A: 

I am admirer of Zend Framework and Modx CMS both.

  1. They have clean OOPS source code with good Documentation.

  2. A flexible architecture.

  3. Continuous up-gradation (bug fixes) and introduction of new features.

The application built upon it can be trusted for robustness and scalability if properly designed.

fandoos
A: 

If really the architecture is the case I would recommend Diem. It's a CMS build over Symfony framework so it is easy do use and extend (at least from programmer perspecive).

kalkulator kredytowy
A: 

the problem with most of these CMS's is that they 1) rely on database tables as entities, 2) use some kind of smarty-ish template that is NOT XSLT, 3) take the MVC pattern too literally and bind the developer to stringent forms of it.

Radicore solves the XSLT problem. My own MyEDB which I threw together over several months ( http://awgtek.blogspot.com/2010/05/codeigniter-versus-myedb.html ) solves these problems.

awgtek
A: 

Digitalus is looking really great now, built on top of Zend Framework

rob