Fuse is a Model/View/Controller framework for PHP. If you're not familiar with MVC architecture, you may want to start with my other post, MVC and you: Partners in Freedom
1. FUSE is easy to get running
The installation scripts included with Fuse guarantee that you'll have a working install a few minutes after downloading. To get an idea of just how easy it is to get started with a Fuse project, have a look at the video I've posted here .
Fuse was built so that PHP developers don't have to feel like they were learning an entirely different language in order to make use of the framework. The syntax and structure follow normal PHP conventions, and everything from the method names to parameter order was designed to be as intuitive as possible.
Let's face it - everyone wants to use the newest, best, and most appropriate tool for the job. However, developers will often shy away from doing things differently because of the learning curve. They fear that introducing new technologies or methodologies will increase their project timeframe and decrease productivity. Fuse was built with a deadline-oriented mentality in mind: you can get started quickly, and you don't have to know every in and out of the framework to start building your project.
2. Data access has never been easier
Fuse's data modeling makes accessing your data easier than you ever thought possible. The management scripts will give you create, read, update, and delete access right off the bat, and customizing your queries is as simple as can be. Let's say you want to list your products, but also include their category_name, which lives in the product_categories table. In Fuse, all you have to do is open your ProductController and add this line:
public $list_options = array( 'include' => 'product_categories' );
That's it. Now when you iterate through your products, you can use the variable <{category_name}> in your template to display the category name for your product. Let's say we only want to display 20 categories? Try this:
public $list_options = array( 'include' => 'product_categories', 'limit' => 20 );
Fuse offers a whole slew of data methods just like these, and your queries can be as simple or as complicated as you need them to be. You will rarely have to write a query, but if you want to, Fuse even offers an object to take the headache out of writing queries . And, as always, if you just want to hand code a query the old fashioned way, Fuse will never stop you. A core principal of Fuse is that it's designed to aid the programmer, not force him or her into the methodologies that we've deemed best.
3. A simple but extremely powerful templating engine
Fuse contains its own robust, intuitive templating engine that allows you to truly separate your code from your presentation. As with everything else, the templating system was designed to be intuitive, and "designer friendly". Want to loop through the products we fetched above? Try this:
<{ITERATOR products}>
name: <{name}><br />
category: <{category_name}><br />
<br />
<{/ITERATOR}>
Want to apply a function to one of your fields? How about we only display the first 200 characters of our description:
<{ITERATOR products}>
name: <{name}><br />
category: <{category_name}><br />
description: <{ print(substr(description, 0, 200)) }>
<br />
<{/ITERATOR}>
Maybe our products can be in more than one category, and we want to fetch them?
After adding a one line method to our Product model that looks like this:
public function get_categories() {
return $this->product_categories->fetch_all();
}
We can do:
<{ITERATOR products}>
Name: <{name}>
Categories:
<{ITERATOR get_categories()}>
<{name}>
<{/ITERATOR}>
<{/ITERATOR}>
Yes, <{name}> will know that when you're in the products loop, you want the product name and when you're in the product categories loop, you want the category name.
4. Searching your data has definitely never been easier.
Your client tells you that they want to be able to search records with any combination of title, date, description, id, and author. You know this is going to be an annoying task of using if/then statements to build a search query. Unless you're using Fuse, where you can do it all with a few lines of code.
The FuseDataController object, which handles all of the wheeling and dealing your app does with the database, has builtin search capabilities that will automatically sanitize data, generate the search query, and maintain the search session across pages. All you have to do is tell it which fields a user can search on, and it's ready to go. You can search fields values directly, with wildcards on either side, between two date intervals, or even have Fuse automatically parse strings like "restaurant AND (mexican OR Thai)" simply by setting your 'filter_type' to 'parsed_boolean'. The search capabilities are discussed here
5. Builtin management of photos for albums, user profiles, etc.
Let's say you're building a site that allows users to create a profile, add photo albums, then add photos to those albums. You're going to want several different sizes - a full sized image, a thumbnail for browsing, and a tiny thumbnail for a contact sheet type of display. You also want to watermark each image with your site's logo. This can be a pretty tedious task if you're not using the FusePhotoController, which should have you up and running in about a half hour if you're slow.
6. Simple but fully featured, scalable user management and ACL
A lot of sites need user authentication. I've seen a lot of custom implementation in my time, and because of the complexity of doing it right, mostly they rely on a very basic user scheme that allows little or no granularity or scalability when it comes to setting permissions. Fuse has a simple to implement, but fully granular and scalable user authentication and permissions scheme built right in. Need to associate users with groups that all have different permissions? No problem. Have a user who's in the "editors" group, but shouldn't have access to delete an article? Just add a restriction for that user. Need to set it up so that when a user tries to access a restricted page, they are asked to login, then redirected back to the original page on success? It's already done. Password encryption? SHA-1, MD5, and crypt() are all supported. I could go on. You can read about it on your own here
7. Integration with existing non-Fused projects
I mentioned above that Fuse endeavors to never prevent the developer from doing what he or she needs to do. If you have a project that's already done in standard, inline PHP, Fuse can go right alongside your existing code without upsetting any of the existing functionality. In fact, if you include the Fuse bootstrap in one of your existing php scripts, you can add Fuse functionality to that script without having to edit any of the existing code.
I have several projects right now that were handed to me as inline PHP, and I put Fuse right on top of it without having to re-code a single line of the existing project. However, I can now use Fuse moving forward for new features and updated functionality.
Conclusion
There you have it. Just a selected list of reasons you should switch to Fuse. Today. For the project you're working on. Right now. Make things easier on yourself. I've introduced a lot of people to MVC development and Fuse and, without fail, every single one has said, after just one project, that they could never possibly go back to their old methodologies of inline scripting and manually writing every query.
Comments welcome.
9 comments:
Do you know what happened to phpfuse.net?
phpfuse.net had a little hiccup there - it's back online now.
Honestly, take your scrub framework and stick with where the sun doesn't shine... this is what, the 12312th php mvc framework and what 99% of these framework authors do is shout the same bullshit they've picked up in the same blog-posts and the same forum threads at sitepoint.com, devnetwork.net or some other forum.
please just shut it and come with something innovative for once.
Fredrik Holmstrom:
I find it surprising that you can speak volumes about a framework you've never used, especially since, according to your blog, you are a CakePHP user. Cake might be the most ill-conceived MVC Rails-clone out there, but I suspect you will sing its praises because you've "picked up in the same blog-posts and the same forum threads at sitepoint.com, devnetwork.net or some other forum"
Hey Jim. I just found out about FUSE framework and have great interest in it. I was looking at Yii framework at some while ago too. Just want to tell you that I like that no.7 point, it's really useful for me. I feel that FUSE is also easy to get started up too. Thanks a lot for your effort!
酒店經紀PRETTY GIRL 台北酒店經紀人 ,禮服店 酒店兼差PRETTY GIRL酒店公關 酒店小姐 彩色爆米花酒店兼職,酒店工作 彩色爆米花酒店經紀, 酒店上班,酒店工作 PRETTY GIRL酒店喝酒酒店上班 彩色爆米花台北酒店酒店小姐 PRETTY GIRL酒店上班酒店打工PRETTY GIRL酒店打工酒店經紀 彩色爆米花
I think, Fredrik Holmström does not understand the meaning of MVC, or his head is just where there is no sun :-
Yeah i was looking at Yii too and php on trax but i think i wil have a go at thi fuse.
let you know...
ps.does it have like scaffoling and crud stuff?
I use cake because it's the most rails like
Hi, I really appreciate all the great content you have here. I am glad I came across your site. I just forwarded this to some friends, loving it!
Cheers!
sterling silver locket , cubic zirconia engagement rings , target bridal registry , new balance tennis shoes , coppola keratin treatment
Post a Comment