development

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.

Linux, Apache, MySQL & PHP | Perl | Python (LAMP Platform)

Linux | Apache | MySQL | PHP/Perl/Python

The LAMP is most often used to create dynamic websites with immense databases such as Facebook. On a website like this, one script can drive multiple pages of content. Additional scripts are used here to process form data and mail content. That too could be done through the main script using included files.

LAMP projects can include social networking integration, forums, forms, uploads/downloads, payment gateways, communities of users, management tools, calendars, shopping carts, mailing lists and all sorts of useful applications. The source code for many of the open source projects on the web are built using LAMP stacks and most are free, while advanced projects often require a registration fee for commercial use.

PHP

Using PHP scripting and MySQL database enables us to create applications that will run on just about any computer environment, regardless of operating system. PHP has thousands of programming functions to facilitate almost any task and working in conjunction with the most popular database in the world leaves SGC endless programming options.

If a computer can run the Apache web server application, then PHP & MySQL will function fluidly in the environment. This means we can develop a project on my Windows PC, and send it to a hosting partner that runs Linux box. The combination of these four tools leaves us with the LAMP (Linux Apache MySQL, PHP/Python/Perl) platform.

PHP is a multi-purpose scripting/programming language that is suited for server-side web development. PHP generally runs on an Apache Web server, however it can also run on Windows IIS machines. PHP is available free of charge, and the PHP Group provides all of the source coding for users to build, extend and design applications for their own use.

PHP primarily acts as a filter, taking input from a file or stream containing text and/or PHP instructions and outputs another stream of data. Most commonly, the output will be HTML. Since PHP 4, the PHP parser compiles input to produce bytecode for processing by the Zend Engine, giving improved performance over its interpreter predecessor.

MySQL

MySQL is the world's most popular open source database software, with over 100 million copies of its software downloaded or distributed throughout its history. With its superior speed, reliability and ease of use, MySQL has become the preferred choice for Web, Web 2.0, SaaS, ISV, Telecom companies and forward-thinking corporate IT Managers because it eliminates the major problems associated with downtime, maintenance and administration for modern, online applications.

Data can be exported from MySQL for use in spreadsheets or databases on your PC using many tools that are readily available. Similarly, data residing in existing PC spreadsheets and databases can be imported to an online database. This portability of data opens up all sorts of uses, especially for workgroups and for those who need to access data from both home and work.

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.

MySQL Sandbox

By: 
Nesbot
Date: 
April 15th, 2010

Certainly staying on top of the latest version of PHP, MySQL and other packages allows for quicker, efficient, secure and robust development. It can also cause a problem: backwards compatibility.

This brings me to a situation we had sometime ago, a client approached to re-develop their site in Drupal (which is no problem for us), the only constraint was that their current server is running MySQL 4.1, and like I mentioned I'm trying to keep up with the latest and newest version, so naturally we're running 5.1.

While in reality this would not be an issue, I've had so many sour experiences with missing PHP extensions, different Apache versions, even different Linux distributions.

So how to resolve this MySQL dilemma? My first option was to install another instance of MySQL and add another port and socket, sounds easy enough. Wrong, it is a very tedious and confusing process (well at least for me), lack of proper documentation, endless number of packages, not to mention fiddling on a dev server while developers are working and testing and/or clients reviewing, etc, etc.

And that's when I found MySQL Sandbox, as they describe it "MySQL Sandbox is a tool that installs one or more MySQL servers within seconds, easily, securely, and with full control."

All you need to do is download MySQL Sandbox, install, download the version of MySQL you need (version 3 till whatever is out now), run MySQL sandbox with the version of MySQL you want and viola! You have a separate instance of MySQL. You can connect just by changing the port number and socket to the version of MySQL you want to run (e.g if the version is 4.1.22 your port will be 4122).

The setup is very seamless, you must have Python installed, and then add the MySQL Sandbox start script to your Linux startup so it loads back up in case your server takes a fall in the middle of the night.

The only issue I've found so far is that it keeps the created Databases on RAM/VRAM so once you reboot your server your MySQL Sandbox DB's disappear. So it should not be used for production purposes, I believe with some work you can probably set up the Sandbox for production, although I would not recommend it.

Feel free to comment or ask questions via our contact form.

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.

Wordpress Blogs Theming Development Design Web

Blog Theming and Development

For most of our projects, we base our work on the Drupal platform. However, some clients seek a more simplified Blog and streamlined option that does not require Drupal’s extensive modules. At that time, we choose to deliver a solution based on WordPress here in San Diego.

WordPress Blogs are an open source software solution based on PHP and MySQL, which allows it to be used free of cost. You can use it on any kind of personal or commercial website without having to pay a single dime in royalties or fees to its original offerer. It is built on the LAMP Platform (which is again open source) and licensed under GPL.

WordPress Blogs Features, Advantages & Benefits

User Friendly - You don’t really have to be experienced to use WordPress when you are a new user/visitor of the website. The administration section is also easy to navigate and it is even easy to add articles/content/blogs to your website.

Plugins Extend Functionality - WordPress plugins allow developers to do just about anything they want and can be installed in a jiffy. For example, if you want to paginate your blog posts, just look on Google and you can easily find the relevant plugin that will do the job for you. Most importantly, many of the plugins can be added by our team in San Diego which saves in development time for all projects.

Standards Compliant - WordPress follows all major web standards and keeps your blog or website compliant to the rules that have to be followed when running a website. More on these rules here.

SEO Friendly - Search engines have to be kept in mind when building a website. WordPress uses many different functions that allow us to search engine optimize your website so you can be found on the Internet. For example, sending pings to other sites, making categories, tagging your posts, use of h1/h2 tags, cleanly named URLs, etc.

Large Community Support - According to recent statistics, WordPress is used on more than 1% of the websites on the Internet. This large user community backs the development of this software, so updates and enhancements are readily available on WordPress. There are also many forums from the community that provide rapid support for many development needs.

Services

Web Design and Development

SGC has been working in the field of custom software development since 1999. Our expert team has taken part in dozens of application development projects. We are experienced in developing advanced systems with complex business logic dealing with large amounts of data and transactions. We are able to supply you with an innovative, trustworthy software solution to complement your most complicated business ideas.

System Development

Custom desktop application development tailored to the client’s specific business requirements. We deliver integrated on- and off-line applications that combine our solid cross-platform experience, technological expertise and an established development methodology.

Application Migration and Porting

Our migration services include porting applications to a new technology platform, database and server porting, data migration, standalone-to-web migration of legacy applications.

Application Re-engineering and Enhancement

We provide reverse engineering of existing systems to understand their business functionality and technical architecture and introduce new/enhanced business logic and improved performance.

Application Audit and Testing

Independent software audit and testing of your Web application, including code reviews, functionality-to-requirements verification, GUI usability and HTML standards compliance testing and performance/security/stability testing.

Application Evolution

Our Web application maintenance and support services are aimed at ensuring stable and uninterrupted operation of your business system. The services include problems analysis, resolution and application enhancement.

Web Database Development

Database-driven solutions have given new approaches to effective business information management due to the flexibility of data retrieval, storage and manipulation processes that they provide. Employing the data structuring and processing advantages that databases grant, SGC devotes client-server and Web-based applications development process to providing our clients with efficient and scalable solutions suiting contemporary business needs. Our company has solid experience with the following databases: MySQL, MSSQL, Oracle, DB2, PostgreSQL and MS Access.

Our Database Development Services include:

Investigation and Planning
Before starting the database development process, our business analysts perform thorough investigation of our clients’ needs to determine required application capacities and plan the solution architecture accordingly.

Data Modeling
Basing on the types of data that the future solution will manage, the database development specialists work out the DB logical schema, relationships between DB entities and modules to ensure the DB reliability and enhanced performance.

Web Interface Design

SGC provides professional website design services. Our skilled Web design team creates various Website projects from basic brochure sites to highly-functional Web-portals. Our pool of resources have the business and technical expertise that support in the development of complex layouts. We provide complete front-end interfaces based on the latest technologies and industry trends.

Professional Design (Look-and-Feel)

With the help of modern design tools our designers create appealing, exclusive designs that highlight your uniqueness and let you stand out from the crowd.

Our designs combine:

  • Appealing style
  • Functional integrity
  • Overall layout consistency
  • Fluid corporate identity
  • Color compatibility
  • Rational white-space usage
Usability

Irrespective of the Website’s functional complexity, we aim at keeping interfaces simple and easy-to-use. We pay attention to various aspects to ensure positive user experience:

  • User-friendly interface
  • Intuitive navigational schemes
  • AJAX-powered interactivity
  • Task-oriented workflow
  • Accessibility standards
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