views:

377

answers:

5

I am working on my senior project, and the topic that we agreed on was a CMS that similarly to Drupal would make things easier by providing robust administration capabilities Some of them include: Content type and data field creation (CCK) Views Creation complex user management (tasks and roles) the ability to add third party modules later on - hooks templating capabilitites

Now the thing is, I would have to show sufficient knowledge and understanding of software architectures, and the development process. I will not start from scratch, for sure, but I can't demonstrate Drupal in my documentation either

I would like to use a framework that one could build skills on, one that is not overly complex, and one, that will still make me write code - the senior project is about my work, not about the work of the php community

I started with Kohana, yet, I didnt like it very much. Its poor documentation, and the frequent changes in the code base made me stop.

I am thinking of something very small and sweet, something that doesn't show up in every step and say : "hey you know what, I can do that better than you" Something like CakePHP, maybe.

I know that more or less, all the code I need is available out there. However, the point here is just a little bit more academical.

Any suggestions ?

+7  A: 

I totally enjoy CodeIgniter. It doesn't have the magic functions of CakePHP/Rails, but it automatically comes with a good MVC setup and a good basic library for forms, ActiveRecord implementation, dealing with POST data sanitization, and other nice things that I just don't prefer to deal with every project.

Their intro video on making a blog is all it took me to get hooked. Good syntax, good practices... Can't recommend it enough for your size/style project.

EDIT

As noted by commenters, I'll line up the pluses as bullet points:

  • Small File Size (download is 2.1MB, but actual files for use ~1.5MB)

  • Libraries and helpers called on demand -> minimizes memory usage

  • Great docs. Not a big fan personally of the drop-from-top effect, but they're written in readable English with good examples

  • Extensible - good number of libraries written by the community

  • Encourages MVC architecture

  • Good built-in security features

Alex Mcp
+1 for great minds think alike :-)
gmagana
+1 codeigniter also has a very good documentation
kemp
Agreed. CodeIgniter has good documentation, has a reasonably well written codebase (assuming you don't mind that it still supports PHP4 which adds a bit of cruft), is small (a requirement by the OP), has a stable and well tested codebase, has a large community, has corporate backing, and does a good bit for you but not TOO much (you have to write your own CRUD operations, authentication libs, etc).
Mike Crittenden
I guess I will try CI after all. I already went through the blog tutorial and it seemed quite fluent. Working with Kohana was a bit more embarrassing at the beginning.
Feel free to mark this as the accepted answer </self-interest>
Alex Mcp
+1  A: 

Have alook at CodeIgniter: Allows you to implement clean MVC architecture, without requiring a book of instructions. The community is great too, so you will not be alone.

gmagana
+2  A: 

Well, personally I have tried Symphony, Zend Framework and Kohana. From those three, Zend Framework made the best first and also the best second impression on me. I have been using it for over a year now (almost two years I think) and I have coded several custom content management systems for my clients (each specific to my client's website needs).

Further, I'm currently working on my bachelor's project which is also about building a content management system of a type and I'm using Zend Framework for it.

Symphony was also great but I had two issues with it.

  • In Windows, executing the Symphony commands (for example for creating a new project with the default directory structure) took way too long (it always took like 10 seconds before the command would start executing). This, I believe, was a known issue but it remained unaddressed for a long time.
  • The documentation (at least at the time I tried Symphony) was inconsistent and there were unfunctional code examples and other errors and that could get pretty annoying.

Zend Framework has a very good documentation so that's what really persuaded me to stay with it, plus there is a very helpful community here at StackOverflow that helped me solve many problems.

I also like the fact it is not developing at such a rapid speed as Kohana or Symphony. I'm kind of a guy that like to get used to a certain way of doing things and I don't like changing my habits every three months.

Richard Knop
I kinda share your opinion about the frequent changes. what I hate about Kohana is that they change the code completely now and then
Yep. There are ZF applications I have written year ago or so and they work with the latest ZF release without any changes needed :)
Richard Knop
The only downside of ZF is its robustness. You are looking for something small and ZF has about 25MB unarchived (only the core library, not including Dojo, unit tests, demos and other stuff! With all externals it's probably close to 30MB). So I guess it really isn't an option for you. How small are you looking for? Less than 10MB? Less than 5MB?
Richard Knop
Size matters I guess. I am looking at a smaller size at the end, so that I could eventually use it as a plus when I spread my CMS after the graduation
Ill vote for Zend Framework for complex applications, for smaller Kohana.
Dr Casper Black
Does Zend offer a built-in ORM functionality, or is there an ORM that's easily integrated with it?
ZF has Zend_Db_Table which is not 100% ORM, it is called Table/Row data gateway design pattern (I think). If you need a pure ORM solution, you can use propel with ZF. But I find Zend_Db_Table to be a great component for models, I use it all the time.
Richard Knop
+8  A: 

You should make Kohana your choice. I don't understand your reasons for avoiding it though.

There are two Kohana versions at the minute, versions 2 and 3.

Versions

The current release for the 2.* line is: 2.3.4 and 2.4 is to be released when the documentation is done and dusted. 2.4 is an API changing release.

The current release for the 3.* line is 3.0.3 and is API frozen until the next major release (many months away).

Documentation

People complain about the Kohana documentation, which I believe is unjustified. It might of been true some time ago, but things have changed quite a lot. Kohana 3 has fantastic documentation which can be found here and has an extensive 3rd party wiki at kerkness.ca.

The documentation for the 2.* line might not be as good but it's certainly enough to get you started at least. When 2.4 is release it'll be as good as Kohana 3s

Notes on CodeIgniter

Just before you run into using CodeIgniter you should be aware of some of the idiotic design mistakes they've made.

  • They originally decided to disable the use of $_GET by running $_GET = array() in one of their core files. They then decided to turn this into a configuration option $allow_get. I don't understand it at all.
  • Staying with PHP4, they've re-implemented a fair few methods not found in PHP4. I wish they'd just move on, heck; even their users have started writing plugins and libraries in PHP5.
  • Sessions support is absolute crap. People still have problems with it daily. Want to have different session drivers? (native, database or cookie) No, you only ever get one choice.

Some of the points from Alex Mcp aren't really valid either.

Small File Size (download is 2.1MB, but actual files for use ~1.5MB).

Kohana is a couple of MB too, but this should never be a reason to choose a framework.

Libraries and helpers called on demand -> minimizes memory usage

This is where CodeIgniter sucks. In PHP5 you'd create a static method and call it like so Class::method();.

I used to hate the CodeIgniter way of $this->load->helper('form'), etc ...

Ask yourself, who's getting in the way now?

Great docs. Not a big fan personally of the drop-from-top effect, but they're written in readable English with good examples

See above.

Extensible - good number of libraries written by the community

Kohana has hundreds of extensions too, http://dev.kohanaphp.com/projects/ & http://github.com/search?q=kohana&amp;type=Everything&amp;repo=&amp;langOverride=&amp;start_value=1

CodeIgniter allows you to extend classes by using a special "My_" prefix to your classes. Kohana does this using a cascading file system, so a file named "form.php" in your application is automatically going to override the "form.php" in the systems directory.

If you really want something that is not going to get in your way and help you rather than hinder you then Kohana is the way to go.

Just my 2cents on the matter.

The Pixel Developer
I agree, Kohana over CI
Dr Casper Black
Great answer to make a great framework sound... well.. great!
alex
A: 

In addition to the choices suggested above (CakePHP, ZendFramework), I'd also suggest you take a look at Symfony

FGM