Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I've been searching for a framework for the past couple weeks and I must say it's not bee very good.
So far I've tried
Code Igniter
Kohana
Dingo
Looked at (started to try)
Symphony
Yii
and read up on many others but I can't seem to find one that I find usable.
Usable for me being simplistic in the CI and Kohana sense, i.e more minimalist. The listed frameworks are those I like but I can't get a feel for Yii and Symphony.
CI feels a little verbose especially when compared to Dingo but both Dingo and Kohana and underdocumented which is a majour turnoff.
From what I can see out there, the frameworks that people like to recommend are not well documented, e.g picking on Kohana, the available documentation is totally useless because it's not for the latest release it just leave the feeling that people don't actually use these things.
Some that looked good but dead or will likely die:
Recess
Not sure What's hapenning with Doo
So to the main question: What are some PHP frameworks that are well documented, lightweight(No Cake, Zend) and that people actually use?
Personally, I really like Lithium. It's 5.3 only, but it's really powerful. It's architected REALLY well (IMHO) and is fairly light. But it does fail your documentation test (And fail hard at that). But I have found that the devs do hang out on IRC and are pretty accepting of new users, so if you don't understand something, there is a source for answers...
I personally use the Nette framework - clean, small, extremely useful, you can use only the parts of it you like and a very good documentation: http://nette.org/en/
The best compromise (yes I said compromise) between features, documentation, and community, is Yii.
I will give you a simple exercise wich I think is representative of the general experience you will have with each respective framework: try to implement htmlpurifyer in Yii, kohana, etc. (I wanted to implement it for real, not as an exerise, but I think the experience is representative).
With google I found a topic on the yii forum about htmlpurifyer. I also found one in the kohana forum. At first glance no big difference, but once you actually try to implement and use it, aaaa, big difference.
In yii it is all served up on a silver platter, including htmlpurifier configurations.
In kohana, there is a module on github for it, but it is missing configurations for htmlpurifier, and missing examples of how you actually purify a variable - try figuring that one out on your own.
In codeigniter, you will probably have to do everything from scratch.
Kohana has cleaner coding style / architecture, but the lack of documewntation is crippling (this could be solved if you arent shy about using their forum... EVERY DAY - THIS IS NOT A JOKE). You will make fast progress for a while in your develpopment with kohana and be really impressed an pleased with it, and then hit a deadspot in the documentation (including google), and all the time you gained untill now, and all thew joy will be tripply lost on the issue you hit because of the lack of documentation.
This problem will never go away in my opinion (unfortunately), because alot of the contributions from the community to Kohana (modules and stuff) are made in github style, with the only documentation being a short introduction (at best).
In order for this problem to go away, the devs would have to encourage somehow the contributors to up their documentation standard. But this isnt going to happen because the devs themselves use the same style of contribution to kohana (github projects with sparse documentation). So even if tthey fix the main documentation, and make it 100% bulletproof, there will still be the comunity contributions which will have bad docs, or you will have to create the whole module from scratch yourself.
I would say Zend has grown tremendously to be one of the front line framework to be used. I have also pointed out few more competitive frameworks here which have good documentation, support and also considering the light weight factor of the framework.
Related
I'm looking for a "good" PHP framework to suit my needs:
well-documented, preferably with a handful of beginner tutorials (majorly, majorly important.. I looked at Kohana and felt like I wouldn't be able to jump in with both feet and learn it)
fairly solid community (either here on Stack Overflow, or on a forum) for questions, etc
stable and time-tested
greatly reduces amount of code/coding (e.g. what jQuery does for JavaScript)
I'm pretty solid at PHP, I'm just looking for something that will help speed up the development process, handle cleansing input from users, simplify database queries, that sort of thing. MVC and OO is nice, but not exactly a requirement for me.
Have you take a look at symfony?
Symfony (version 1 or 2 - doesn't matter) has a great documentation (with a book to guide you building a web, a book showing you how the framework works, and the usual API documentation). Check here for the full documentation of symfony1 and symfony2.
Symfony2 is rather new, so while I can say it's stable (I'm using it and quite sure it is), time-tested-ness (is that a word? :p) is not so good. But if you want a stable and time-tested, you could try symfony1, because it's still supported until 2013.
The symfony community is also great, both the user community and the developers. Stackoverflow also has many good symfony users, and you can check their mailing list and other resources here.
As for reducing amount of code, symfony comes with a lot of standard library, ORM, and many code-generation tool (usually called from command line). So yeah, it save so many code. In symfony1, you can even generate a CRUD application without a single line of code written by you. I know you also can do this in symfony2, but I haven't tried it yet. You can be sure that you will more focused on coding your business logic well than fighting the framework.
Hope this helps.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
First, let me apologize for Yet Another Framework Question. But I think this is different enough from the usual "What framework should I choose?" to warrant it.
Here's my situation: For the past year I've been using a custom framework. It's been used on everything from small CMS's to larger sites and even a mid sized social network. It's worked great but I now see its limitations. So, I've decided to switch to a 3rd party framework. The simpler frameworks (CI, Kohana, Cake) seem too inflexible from what I've heard - so this led me towards ZF. But, I've also heard that ZF may be too flexible and thus hard to work with. What further complicates this is that I'm looking for a one-size-fits-all solution; I need a setup that works on small projects to very large projects. I am the main developer, but I need my partner to eventually be able to learn the system and help with the less complicated programming tasks.
I've researched Doctrine and I love it. So I'm leaning towards Symfony (with Doctrine) as the main framework with ZF to fill in the gaps. Plus, I need the ability to add my own pieces to this platform parallel to any 3rd party libraries. I hope this will provide me with a solid, extensible platform, as we really can't afford to be switching out frameworks every few projects.
I'm looking for advice from others who have been in the same situation as I am in now. Any advice would be greatly appreciated.
Edit: I've posted my solution below in hopes of helping other people in the same situation
After some research I've decided to go with Symfony. Here are my reasons:
Less verbose than ZF
Seems very customizable due to usage of YAML files (yet I never feel overwhelmed by them)
Autoloading of custom classes doesn't require any extra work like in ZF (albeit it's not hard to set up in ZF)
The developer toolbar is great, and they're adding some nice features to it in ver 1.3
The ability to use pieces from other frameworks (ZF, eZComponents) makes me feel confident that I won't have trouble finding what I need
Comes bundled with Doctrine and is very easy to set up (in fact Doctrine will become the default ORM in ver 1.3)
It seems like there's a much larger community for Symfony. Google "symfony tutorials" versus "zend framework tutorials" and you'll see a massive difference in the number of results
Plenty of documentation: tutorials (the Jobeet tutorial so far is very good), API references, and a more human readable description of the framework and its underlying principles
Yahoo! has used it for a few of their own projects - it's nice to see a Big Name back a framework IMHO
Edit: For the sake of hopefully helping others in the same situation, here are some things I don't like about Symfony:
Does not follow the PEAR naming scheme (ZF does)
Internal classes begin with "sf". This is contrary to the practice of capitalizing the first letter of the class name
Variables and functions are written_like_this, yet class methods are camelCased - this seems sloppy to me
These are all cosmetic issues though; things that bother me because I like to do things my way. I realize that whenever you use third party software you must be willing to make some sacrifices.
ZF is certainly a nice framework, but I feel using Symfony as the primary framework and extending it with pieces of ZF is the best choice for me and my team.
Edit
It's been 2 years since originally posting this, and since it's still getting hits I thought I'd give a quick update. I probably built about 25 - 30 projects using symfony 1.x in the last 2 years, and I'm very happy with how it performed. As a full stack MVC framework, partnered with Doctrine, it handled almost everything I threw at it. And whatever it couldn't handle, it was easy to add my own custom code. In fact, that's what I love most about symfony - how easy it is to extend. I ended up building a bunch of plugins and Doctrine behaviors that greatly reduced development time. And the admin generator tools have been a god-send. I'm still using symfony 1.4 for a few projects here and there, but have decided to mainly focus now on using Symfony2. It's a completely different beast than symfony 1, but I really appreciate its architecture. More importantly, it seems even easier to extend than symfony 1.x. I do miss some of 1.x's features, but that's the sacrafice you have to make when switching frameworks.
I like using ZF because of strong conventions. You can be sure, that everything will be as you expect it. Class names, function names, variable names, directory structure, ... all of it. It really speeds up the development if you stick to it. If you adapt it it's more like looking into your own code, when checking the ZF internals ;)
Let's be honest. ZF is not fast. Not as fast as Nette, CodeIgniter, etc. But the difference is that there is a class for everything. And if there is not, there is a class you can extend or interface you can implement.
All the other frameworks try to gain on the "wow" effect (blog in 30secs, twitter in 2 hours, etc). But when develioping a real life application, you realize, that it's the use at will, flexible and extensive architecture, that you need.
Zend Framework: Huge, Flexible, Modular.
I'd use only if am building a enterprise big ultra system.
But, I'm using Yii Framework and I like it.
Because: Very Fast, Simple, Widgets (easy to reuse component, this is very nice).
Yii it's easer to use, because is not a enterprise framework, and have all Basic features you really need in most cases.
*
EDIT: Now that I nearly understand HOW
to improve the ZendFramework using
your own code (as asked here Adding
3rd Party lib to Zend and here
Using 3rd Party lib within Zend),
I switched back to ZendFramework. I
currently design my application and
each day which I work and test
anything with ZendFramework it gets
more and more familiar and it easily
quickens my developement. My advise:
Use ZendFramework.
*
I have currently the same problem:
My story:
I was using CakePHP until I wanted to expand my project's size.
CakePHP was not as flexible as I wanted it to be.
So i tried to use ZendFramework.
The very first time I read the 'QuickStart' guide, i was a little bit afraid of having that much files for a simple guestbook application.
After a time of 'playing' with the ZendFramework I decided to use ZF as a 3rd party lib in my own custom framework.
The problem is, IF you use Zend's MVC components you might be forced to use 30% of the whole framework, because the MVC components are one of the biggest part of the ZF.
I mean if I use that much of a framework WHY shouldn't you use the rest, too?
After that, I decided to write my COMPLETE custom framework without using ZendFramework as 3rd party lib.
Now I am sitting in front of mountains of papers, full of sketches about code design.
I will keep you up to date about my further decisions.
I honestly think it really depends on your style. There's no end all be all answer to this question.
ZF relies heavily on classic and proven design principles. It's also very extensible, but requires more "configuration" than "convention". I personally do not trust 3rd party code by nature, so I'm a fan of more verbosity, for the sake of being more familiar with the technology I'm working with. But that's just me.
I've also used CakePHP successfully and two other frameworks proprietary to a company I worked for with great success. They're all trying to do similar things, just pick what feels best for you.
I've personally used CakePHP successfully for both large and small projects, however it is often difficult to make it budge the way you want. My reasons for using Cake continue to reside in the fact that the community support is top notch, the security updates are often, and they do not force meta-packages (such as unit testing) upon you (although this is bundled, you can just bin it if you're not interested in using the built in package).
Altogether, it's made a nice system for me over the past few months, however I have heard time and time again that Symphony is fantastic, so you may perhaps be on the money with your first thoughts. With NetBeans support for Symphony in the pipeline, I may too find the need to switch before long.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
Which one of this frameworks would you recommend to someone who knows the basics of PHP?
What are the advantages and disadvantages?
I wouldn't suggest any frameworks to someone who knows just the basics. Instead, I'd suggest to get a firm grip on OOP and the most common Design Patterns first, because that is what you will find in these frameworks. It also doesn't hurt to know your way around the various available PHP libs and extensions.
I think frameworks are a double edged sword for beginners. You may be able to do more in less time in many cases but in other cases (not a few) you will make mistakes because you do not understand the complexity of the framework code. I think you should be able to read a framework and understand its architecture if you want to use it.
That said it seems that the real cracks use Symfony. It might become or might already be the best, most versatile, most powerfull framework out there. But it definitely needs a lot of understanding of the principles of programming as well as web techonology and server technology in general.
Also very powerfull and much easier to start with is Zend Framework. It can definitely do much more for you than Kohana.
If you want a lightweight framework, Kohana is a good choice too. It has come a long way the last months and I think it is rapidly establishing itself as the new lightweight favourite.
So all in all, the three frameworks you mentioned are the three top frameworks on the PHP framework market at the moment and you won't make a mistake with any of them.
UPDATE: It is now 8 years later and Kohana is no longer maintained. Laravel would be my current recommendation for a relatively simple yet very powerful PHP framework.
Even though ZF is well established and well documented, I would suggest Kohana since it is quite a bit less complex. It is very easy to start tinkering with it by simply downloading or cloning the sample application from github.
Symphony is not for beginners. I disagree that frameworks in general are not for beginners. Starting with a blank file and no framework leaves all of the architectural design up to someone who has no idea what they are doing while starting with a lightweight framework like Kohana gives you a well-organised platform and documentation to hit the ground running. Learning OO without any examples to guide you is very difficult since you don't already know what good OO design looks like.
After downloading/cloning the Kohana sample app, hit the docs and you'll be writing well-designed OO code in no time.
For a beginner and using the three examples you gave I would say start with Kohana(or Code Igniter) for these reasons.
It's a lightweight framework which is a good starting point for full PHP development because it serves as a guide in how to organize a project in a language that doesn't have a lot of structure on it's own
Introduces basic MVC concepts.
Has basic features that will be useful in any PHP project e.g. caching, data filtering etc
I would then move on the Zend Framework if you plan or strive to work on larger projects for these reasons:
Kohana documentation is greatly lacking (it's manageable for a beginner because you end up poking around and see what makes a framework tick so that they don't see like this ominous holy code which is a plus; but in a major project with timelines it's annoying)
Kohana enforces certain conventions which is often inconvenient in major projects
Lacks mature features that are useful in "enterprise" development e.g. a decent unit testing system (there is rudimentary phpunit modules to use in Kohana and you can certainly use base PHPUnit but in contrast Zend Framework has extended PHPUnit functionality to better suite it's framework)
Better support. Zend framework has the Zend Company behind it as well as a huge community. This is a huge win for them because it permeates in everything about the framework e.g. configuration is thought out much better in Zend framework,more robust security featues, proper class autoloading based on PEAR namespacing, and it has a plethora of contributed components. Some of these benefits you can shrug of when starting but become invaluable when taking on large projects.
I've not used symfony but from what I can tell that also has some useful features once you get more versed in PHP (better ORM, better scaffolding etc). Synopsis: Kohana is a good start but I'd advise against roosting there if you plan to get into PHP beyond small sites.
In your case I would go with (in this order):
Kohana
Zend Framework
Since they are easier to pick up (specially for a beginner) than Symphony.
I always wondered why people say that not providing a unit test system is a major drawback in a framework. Well, testing you app is your responsibility and you should use the tools you're most comfortable with. Me, for instance, prefer SimpleTest and are bothered with framework that come bundled with and promote the use of their own testing system. Why learn another unit test system when SimpleTest is more than enough?
Notice that providing a unit test system and unit testing the framework is two completely different things. The framework should be unit tested, period. But for this task, the developers of the framework may use the tool they prefer most. They may even roll their own test framework (it seems that some people never learn and keep reinventing the wheel). However, (IMHO) the framework test should be kept separate from the framework itself. It shouldn't even be included on the framework tarball, but be kept as a separate package that interest only to developers of the framework.
Just my 2c.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I'm about to begin building a huge clinical healthcare application with PHP, and I'm looking for some advice on a framework. I need to be able to come up with a quick prototype, so it's important that the framework takes care of many mundane tasks; therefore, I've narrowed it down to CakePHP or Symfony.
I'm hoping to get a few developers opinions that have worked with both frameworks.
Thanks, Pete
IBM published an article here on both those frameworks along with Zend in a comparisson, see:
http://www.ibm.com/developerworks/opensource/library/os-php-fwk1/?S_TACT=105AGX44&S_CMP=ART
I personally use CakePHP, it's pretty awesome compared to just straight out PHP. Easy to build things in, very MVC focused, reasonable integration with third party components. I did have some issues with the lack of any sort of discernable upgrade path between versions though. I can't speak for Symfony, but I believe it's more heavyweight than CakePHP.
Take a look at the screencasts for CakePHP as well, they give a good overview:
http://cakephp.org/screencasts
I'd like to counter some of the arguments presented above. I've worked extensively with Zend Framework and symfony, and I've had a brief look at CakePHP.
First of all, compared to symfony, the ZF documentation is not "extensive" - its on the other hand quite superficial. Second, I think that the symfony community is much more available and helpful than the ZF framework in general, and the development process is much more transparent.
However, I agree that Zend Framework enjoys the advantage of being supported by Zend, which might be a powerful argument for enterprise projects.
In my experience symfony is more of a framework than ZF. In symfony you use the whole package - or the whole frame, while you in ZF is able to use tools to your liking, making it more like a "toolbox" than a framework.
Also remember that if you like some of the tools in ZF, you'll be able to use these in symfony (and probably also CakePHP) projects, alongside symfony/CakePHP.
This is not really an answer but more like a general comment to the answers given above.
I recommend reading the right answer for this question. It mentions Zend Framework as the best choice, and presents some correct points to justify it.
Let me begin by saying I have no prior experience with CakePHP or Zend other than having browsed around in the framework code and their documentation. I started using Symfony about 15 months ago and I researched before what framework to use. I decided to go for Symfony because I found the Symfony core to be written in a nice and orderly way. It felt like I could easily understand the framework by reading the code itself. Besides that I found an enormous amount of documentation that is really focussed on working with the framework to produce certain functionalities. Very pragmatic so to say. CakePHP just doesn't seem to fit my personal style and I perceived the core to be very hacky. Again, I might be wrong but this was how I felt about it back than. After 15 months of coding with Symfony I'm still very satisfied. Often you read comments or blogs that say it's too complicated. I think these people insult their own intelligence. It indeed takes a while before you get a firm grasp of the frameworks internals and approaches to problems but once you are past that point it really is an awesome tool. The community is very helpful and the future looks bright. All in all I can only advise you to go with your gut feeling when you look at the approaches taken by the frameworks and their code and coding styles. You'll spend a lot of time in these frameworks so you must feel at ease when you look at their code and their solutions for common problems. Every framework out there is terrible if you start fighting it, going along with it will make every one of them a great tool. Some might in the end turn out better than the other. I guess you'll know the answer to that yourself after finishing your project with it.
Good luck:-)
I've had minimal experience with both frameworks, but all i've ever heard about symfony was complaints (even though it seems to be used a ton!). Probably just that people don't spend the time to fully learn the framework.
From my experience both seem to be decent frameworks, but like any good developer you must understand at least the level of abstraction below what you are using to be effective.
Probably Zend Framework.
If you want something different try codeigniter.com
or it's oo version in php5 www.kohanaphp.com
I have not used other frameworks, but I use Zend Framework and it is great. benefits are:
clean and standard library, coding style, conventions, etc.
enterprise support: it is supported by Zend, the company that every PHP programmer knows
comprehensive manual, many blog posts and tutorials, at least 2 well written books
has packages on most open source operating systems, so easy to install and maintain
a very live open source project, updates come so soon you can't keep up to them.
open license: ZF uses BSD-like license so you won't have many licensing issues
My framework decisions boil down to this (note that I primarily use Cake, little Zend, and have fiddled around with CodeIgniter and symfony).
Zend is the most enterprisey. You get the folks # Zend supporting it -- I think it's development timeline is the most solid moving forward. It also has some great modules like PDF readers, etc.
CakePHP's focus (IMO) is rapid development. But it's consistently one of the worst performance-wise -- if you're going to have a heavy-use app, I think that Paul M Jones has some posts on benchmarks. Zend is about 2-2.5x faster than Cake, IIRC. If you don't have MVC experience, Cake can be a good choice b/c it def. locks you into MVC. I find myself constantly needing to think outside their pattern, though -- which is why I'm slowly moving to Zend.
The other frameworks have different strengths, too. At PHP|Tek in Chicago, CodeIgniter was the talk of the conference, so it might have a lot of momentum over the next year or two.
Cake and Zend also have super tight integration with some other enterprisey stuff like unit tests, etc.
Definitely Yii, we used it several times for the enterprise and were very satisfied with the result. I especially like its extensions like backvendor, coco, bootstrap.
For me Yii has been quite easy to learn and implement. Tried cake php but yii seems much clearer. Anyway whatever framework you use, you must continually improve your core language skills in parallel. This helps to take the maximum advantage of the framework that you`re using.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Facing a need for a single CMS we can use for rapid deployment of customized CMS solutions, I am wondering if anyone can share any constructive feedback, experiences, pros and cons of this, seemingly powerful, piece of software.
The whole story/marketing pitch sounds solid, and from a quick glance at the CMS itself things seem to be put together in a coherent and pretty flexible way. I am however looking for first hand experiences as they usually reflect the real situation way better than anything else.
If you have used (or are still using) ezPublish for something, I would love to hear about it.
Thanks!
Having in mind all good points of eZ Publish you should be aware of bad ones. From programmer point of view: Most of the system was written in php4, and was rewritten in a hurry, to make it works with php5. Lack of design patterns and object oriented approach in kernel, makes system hard to develope with, and to read its code. To add some heavier functionality not supplied by CMS, you can use extension system. Problem is programming extensions is slow and painful (documentation only in code). There is quite good technical documentation on www.ez.no but most of it is for webdesigners.
I'v used ezPublish for quite a while and I can say its very flexible and allows a range of different solutions to quickly be developed with it. The ability to add content types is what makes it awesome.
It can be a little bit slow at times, but with proper caching set up it can also be really fast.
The biggest downside: The learning curve is very steep and long, and there aren't enough knowledgeable eZ Publish developers available in North America.
However, from the beginning I've been fond of its overall architecture, which seems to be elegant, flexible and generally well thought-out. Over time, some things have been bolted on in ways that don't necessarily fit perfectly. But it's pretty amazing what you can accomplish with the core functionality, and overriding and extending the core is clean and maintains good separation.
I would say that if you are in it for the long haul and can afford to train your developers (really, you can't afford not to) then eZ Publish is a reasonably good choice. Once you figure out the platform and develop your own kit of tools, it should be fairly quick to deploy custom solutions.
I will also concur with an earlier answer, that the class system really shines. Caching is always an issue, so don't forget to learn the caching system. Your site can fly on eZ Publish, but you must understand caching to make it do so!
I have Used eZ Publish for some years now.
It was quite difficult to learn it at first and understanding the structure, but when you are on the way then everything would be simple and fast, especially with their new kernel on Symfony2.
I would recommend using eZPublish 5, as I suppose you no longer talk about the older versions, only if you have at least some basic knowledge of eZ version4. That is because the admin is still using the legacy and all the settings are done using .ini files which you really have to know. Nothing hard, but learning curve is definitely steep.
Also using eZFlow will require working with both .ini and .yml configuration files, so you need to understand both config structures.
Further on, as I have been at a presentation for the new admin, which unfortunately will be using YUI as JS framework, and having seen the release plan for this year, I can say you will have to keep the legacy admin if you want to benefit of all the functionalities as there is an enormous amount of work to be done to have everything migrated on Symfony 2.
Even with the announcement of eZPlatform(eZ 6), I am not that confident we will have a really STABLE version anywhere this year.