framework

PHP & MySQL Frameworks and Content Management Systems (CakePHP, CodeIgniter, Symfony, Joomla & Zend)

Why we use a Framework or Content Management Systems like CakePHP, CodeIgniter, Symfony, Zend & Joomla

Frameworks like CodeIgniter, Symfony, Zend, CakePHP, etc., are used by all of our teams in San Diego, Cordoba, Miraflores, and Madrid. In most cases, they are extremely helpful and important because they exist to help web developers write less code, which saves time. Software is all about re-usability and adapting to change rapidly with as little ramp-up time as possible. Many projects while working through tight deadlines have to ponder and think about all the “mystical” ways to write components. Is the better solution to reuse someone else's code now and in the future?

Our lead systems architect in San Diego says, "While working with our internal employees as an outsourced team in Argentina and Peru, frameworks create a common central point based on the MySQL and PHP (LAMP Platform), which allows the entire organization to stay on the same page with regards to web development. That common point is critical because we all know that project specifications change so quickly that by the time someone else comes along to reuse your stuff, it probably needs to be re-written anyway."

We can honestly say that the projects we have worked on using a framework started more easily and finished a little faster than if we wrote raw code (one line at a time). As requirements change and grow for these projects post-deployment, we are less concerned of maintainability because of the community that often backs each and every framework. These communities often update the core of the framework and supply module/package updates on an almost weekly basis...and almost every one of those are free to download.

Frameworks and Content Management Systems we prefer here at SGC

CakePHP

www.CakePHP.org
CakePHP is a rapid development framework for PHP that provides an extensible architecture for developing, maintaining, and deploying applications. Using commonly known design patterns like MVC and ORM within the convention over configuration paradigm, CakePHP reduces development schedules and helps us as developers to write less code.

CodeIgniter

www.CodeIgniter.com
CodeIgniter is a powerful PHP framework with a very small footprint, built for projects that need a simple and elegant solution. As developers we know many of our customers live in the real world of shared hosting accounts and this streamlined package is thoroughly documented, making CodeIgniter one of our preferred frameworks.

Symfony

www.Symfony-Project.org
Symfony is a full-stack framework and a library of cohesive classes written in PHP. The framework provides an architecture of components and tools for us as developers to build complex web applications faster than raw code.

Symfony is built based on experience. It does not reinvent the wheel, it uses best practices of web development and integrates some great third-party libraries at the same time. Symfony is one of the most popular PHP frameworks around because of those embedded benefits.

Zend

www.Zend.com
Zend Framework is an open source, object oriented web application framework for PHP 5. Zend Framework is often called a "component library" because it has many loosely coupled components that can be used more or less independently. Zend Framework also provides an advanced Model-View-Controller (MVC) implementation that can be used to establish a basic structure for your Zend Framework applications. A full list of Zend Framework components along with short descriptions may be found in the » components overview. This QuickStart will introduce you to some of Zend Framework's most commonly used components, including Zend_Controller, Zend_Layout, Zend_Config, Zend_Db, Zend_Db_Table and Zend_Registry, along with a few view helpers.

Joomla

www.Jommla.org
Joomla is an award-winning PHP content management system (CMS), which enables us to build websites and online applications for our clients on the LAMP platform. Many aspects, including its ease-of-use and extensibility, have made Joomla one of the most popular website software packages available for free download. Best of all, Joomla is an open source solution that is freely available to everyone.

Joomla is designed for a clean install and set up which supports even developers that may not be senior. Many web hosting services offer custom hosting just for the Joomla package and best of all it is PHP and MySQL

Components that make up quality PHP & MySQL Frameworks

  • MVC: Indicates whether the framework comes with inbuilt support for a Model-View-Controller setup.
  • Multiple DB's: Indicates whether the framework supports multiple databases without having to change anything.
  • ORM: Indicates whether the framework supports an object-record mapper, usually an implementation of ActiveRecord.
  • DB Objects: Indicates whether the framework includes other database objects, such as a TableGateWay.
  • Templates: Indicates whether the framework has an inbuilt template engine.
  • Caching: Indicates whether the framework includes a caching object or some other way of caching.
  • Validation: Indicates whether the framework has a built-in validation or filtering component.
  • Ajax: Indicates whether the framework comes with built-in support for Ajax.
  • Auth Module: Indicates whether the framework has a built-in module for handling user authentication.
  • Modules: Indicates whether the framework has other modules, like an RSS feed parser, PDF module, or anything else (useful).
  • EDP: Event Driven Programming.New!

A content management system is software that keeps track of every piece of content on your Web site, much like your local public library keeps track of books and stores them. Content can be simple text, photos, music, video, documents, or just about anything you can think of. A major advantage of using a CMS is that it requires almost no technical skill or knowledge to manage. Since the CMS manages all your content, you don't have to.

A Web content management (WCM) system is a CMS designed to simplify the publication of web content to websites and mobile devices, in particular, allowing content creators to submit content without requiring technical knowledge of HTML or the uploading of files. Several web based content management systems exist both in the Open Source and commercial domains. However, this is one area where OSS has gained dominance over proprietary counterparts.

MVCs - Model View Controller

Model - This is the part of your application that defines its basic functionality behind a set of abstractions. Data access routines and some business logic can be defined in the model.

View - Views define exactly what is presented to the user. Usually controllers pass data to each view to render in some format. Views will often collect data from the user, as well. This is where you're likely to find HTML markup in your MVC applications.

Controller - Controllers bind the whole pattern together. They manipulate models, decide which view to display based on the user's request and other factors, pass along the data that each view will need, or hand off control to another controller entirely. Most MVC experts recommend » keeping controllers as skinny as possible.

Specialization in the Wide Web World (From ASP to JAVA to Zend)

By: 
Greg in San Diego
Date: 
June 16th, 2010

Is specialization in the Web/Internet industry a good thing? Should we encourage or discourage what I am seeing as a convergence to everyone “trying” to do everything, while at the same there are more and more technologies to worry about?

Analogy

I'll start off everything by saying experts in certain industries are not always an expert in every aspect of said industry. Let's be sure we are on the same level with this simple analogy;

Automobile Industry;
  • A stock car racer with 15 years experience may not be the best person to paint a car
  • A used car salesman with 30 years of experience may not be the best person to repair the same car he just sold
  • An auto repair technician with 10 years experience may not be the best person to race a car in the left-turn-circuit
  • An automobile aerodynamic engineer that graduated from UC San Diego may not be the best person to give you a driving test
(that probably levels the playing field now…)

The Focus

There are dozens (if not hundreds) of technologies used in the Wide Web World (I know that is out of order, it’s on purpose). These technologies range from simple HTML with shameful font and marquee tags to highly specialized database backed coding platforms with complex IDEs used to code the core platform (like JAVA & its Spring Framework). Which of these are really the best and which should be avoided? I guess the decision between A-B-C… in the WWW is like choosing a car for most people. Some like them old and simple and others prefer them new and complex.

Options

With so many options available today let’s take a look at the Wide Web World technologies according to Wikipedia.org.

Programmin Languages for the Web with their CMS & Framework Options
Language Frameworks and CMS
ASP.NET SharePoint | ASP.NET MVC | ASP.NET Web Forms | ASP.NET Dynamic Data | BFC | DotNetNuke | MonoRail | OpenRasta | Umbraco | Vici MVC
ColdFusion ColdSpring | Fusebox | Mach-II | Model-Glue | onTap | on Wheels
C++ CppCMS | Wt - Web toolkit
JAVA Apache Struts | AppFuse | Flexive | GWT | Grails | Vaadin | ItsNat | JavaServer Faces | Jspx | Makumba | OpenXava | Play | Eclipse RAP | Reasonable Server Faces | RIFE | Restlet | Seam | Spring | Stripes | Tapestry | WebWork | Wicket | ZK | ICEfaces
Perl Catalyst | Interchange | Mason | Maypole | Reaction | WebGUI
PHP CakePHP | CodeIgniter | Drupal | Horde | Joomla | Lynx | Midgard | MODx | Nette | Qcodo | Seagull | SilverStripe | Symfony | TYPO3 | Wordpress | Zend
Python Django | Nevow | TurboGears | Plone | Pyjamas | Pylons | web2py | Zope
Ruby Ruby on Rails | Merb | Sinatra | Hobo | Camping | Nitro | Ramaze | Scala Lift

Main Discussion Points

As shown above there are many platforms, frameworks, CMS, MVCs and languages that Web sites can be built upon. We all have our preference and certainly we all have ones we avoid like the plague as well.
The questions are...;

  • Why do you prefer your choice over someone else's?
  • Which really is the best?
  • Why is that the best?

Submit your answers here!

The answers to those questions above are what I am really interested in hearing at this point.
Here are my answers to those so you know where I am coming from.

  • I prefer my choices because I am most familiar with them and they have not let me down yet.
  • I am a Visual Basic or PHP person.
  • The rest of the stuff just seems like fluff or is too specialized.

JAVA, J2EE, JSP & The Spring Framework

Perhaps the most difficult problem in building enterprise applications today is the wide variety platforms and operating systems. There is also a blurring of the line between what is wanted and what is needed by clients, developers, manager, and owners. All too often, people go overboard with their applications and we choose to offer JAVA because it allows the app to grow as needed. Not only can the application be scalable, but it can also perform on Windows, Linux, and Mac operating systems.

Drupal CMS & Framework Overview from SGC San Diego

By: 
Greg
Date: 
January 13th, 2010

Drupal is our preferred free, open source, third-party CMS & Framework and it is our first choice when building sites for our clients that require its abilities and admin controls.
Official site: http://www.drupal.org
Advantages: templates control,system architecture, API, taxonomy, community.
Disadvantages: difficulty of working without preparation.

If you wish to completely control the appearance and the functionality of your Website or Web application (the level of control is determined by your needs), and do this effectively, the Drupal API will work extremely well for you and be very flexible as a template system solution.

In general, Drupal is simply a tool to construct your Website and not actually the site itself. The Drupal core contains only the required functionality to get your site working at a basic level. To do more custom and contributed modules, the modules need to be integrated to add your desired functionality. A basic Drupal install has many modules included however, such as content, profile, taxonomy, contact, blog, forum, search and so on. Some beginners may choose another CMS because it may take a lot of time to find the necessary module for a beginner and Drupal is really a development tool, not a do-it-yourself-kit!

You may think that Drupal was designed for programmers. But this doesn’t mean that you won’t be able to make an individual and attractive site if you are a web designer. If you don’t know PHP, JavaScript and MySQL you could still install Drupal and work with it. It is most likely not necessary to write your own modules if you are building a brochure Website with no custom abilities/functionality. It will be enough to go to the site and download them as needed.

Working with the Drupal API, CMS, and Framework is like a breath of fresh air for the programmer as compared to other options out there like Joomla, for example. Simple and well written code, powerful API, excellent documentation — what else do we need? The structure of the core assumes easy re-definition of the majority of core functions and modules (almost all which are responsible for output) with the help of «hooks». To write your own modules is very simple with the use of these core «hooks». Add just a few of special functions in the «filename.module» file you create — and your module is ready.

It is possible to apply Drupal to almost any site type: from simple static sites (the system of pseudonyms allows to set any URL for pages), to complicated community-portals. There will be almost no restrictions in site design – it all depends only on the desire and experience of the developer.

Drupal has a built-in system of internal caching which provides stable work even at overloads (slashdot and digg-effects). You can automatically turn off the part of functionality at flow of visitors. For some great examples, visit http://www.drupal.org and http://www.theonion.com.

Syndicate content

Copyright 1999-2011 ©SGC | All Rights Reserved
Our Work | Terms of Service | Privacy Policy | Sitemap | XML | Admin
Phone: (888) 622-7098 | Fax (858) 737-7921