0% found this document useful (0 votes)
36 views

Technology Overview: Yellow Duck CMS

The document provides an overview of the technologies that will be used to develop the Yellow Duck CMS, including: - PHP as the programming language - The Zend Framework as the web application framework - MySQL and SQLite as supported database engines - Source code control with CVS or Subversion - WYSIWYG HTML editors like TinyMCE and FckEditor - JavaScript libraries like Prototype and jQuery

Uploaded by

faridbanget
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
36 views

Technology Overview: Yellow Duck CMS

The document provides an overview of the technologies that will be used to develop the Yellow Duck CMS, including: - PHP as the programming language - The Zend Framework as the web application framework - MySQL and SQLite as supported database engines - Source code control with CVS or Subversion - WYSIWYG HTML editors like TinyMCE and FckEditor - JavaScript libraries like Prototype and jQuery

Uploaded by

faridbanget
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

Technology Overview

Yellow Duck CMS

Pieter Claerhout www.yellowduck.be [email protected]


Yellow Duck CMS

Table of Contents

Technology Overview 1

Programming language 1

Web Application Framework 1

Common PHP Frameworks 1

Code Igniter 1

CakePHP 2

Symfony Web PHP Framework 2

Prado 2

Zend Framework for PHP 2

Database engine 3

General database considerations 3

MySQL 3

SQLite 4

Source Code Control 4

CVS 4

Subversion 4

WYSIWYG HTML Editing Components 4

TinyMCE 4

FckEditor 5

Flash TextArea 5

Technology Overview i
Yellow Duck CMS

JavaScript libraries 5

Prototype 5

jQuery 5

Technology Overview ii
Yellow Duck CMS

Technology Overview

Programming language
The Yellow Duck CMS will be written using the PHP1 programming language.

The reason behind this descision is based on:

• PHP has proven to be fast (especially if you are using an cache engine)
• PHP is easy and cheap to deploy on a production web server
• Since PHP 5, we can create full blown object oriented code
• PHP is widespread in the web development world
• PHP is easy enough so that even less experienced programmers can understand the code
• PHP is an interpreted language, as such we are avoiding costly and time-consuming compile cycles

Web Application Framework


The framework that will be used to construct the Yellow Duck CMS is Zend’s PHP Framework 2. Using a framework has a lot
of benefits and improves the efficiency of a developer significantally. Using a framework also forces the different developers
to work in a structured and generalized way, making it easier to share and debug code.

A framework also allows code re-usability if programmed correctly.

Common PHP Frameworks

Code Igniter3
Code Igniter is the framework created by the same people that created Expression Engine 4. The framework supports both
PHP 4 and PHP 5 environments and claims to be one of the fastest frameworks around.

However, some of the concepts of Code Igniter make it difficult to implement in the Yellow Duck CMS. As with many MVC
frameworks, you are forced to follow their concepts and it’s very hard to overrule them.

Also, the way you can extend base classes in the framework is a bit cumbersome and very limited. Also the form validation
functions are very basic. A solid form framework is unfortunately not available in Code Igniter, expect for a few form helpers.

Another disadvantage of Code Igniter is that it’s libraries are not usable in a stand-alone environment.

The advantages of Code Igniter is that it’s very easy to use and to learn, also for people that don’t have a lot of experience
with web application frameworks. Another advantage is that Code Igniter has quite an active community.

1 http://www.php.net

2 http://framework.zend.com

3 http://codeigniter.com

4 http://expressionengine.com

Technology Overview 1
Yellow Duck CMS

CodeIgniter also has a very good and extensive documentation.

CakePHP5
CakePHP is an almost straight port of Ruby On Rails 6 to PHP. It follows the concept of convention over configuration,
making it very easy and fast to develop with.

However, the big disadvantage is that you are really forced to use their conventions. If you want to do something that is not
directly supported by the framework, you’ll have a hard time doing so.

Also, the documentation of CakePHP is rather limited.

The advantage of CakePHP is that it does a lot of the hard work without you having to program everything manually.

It also seems that the development of CakePHP has slowed down somehow. The version we should be using, version 1.2 is
already in beta for a very long time and doesn’t seem to get to a released stated.

CakePHP shares many of the disadvantages that Code Igniter has. There is no form framework, the framework is pretty slow
and isn’t optimized for PHP 5.

Symfony Web PHP Framework7


Symfony is one of the pure PHP5 frameworks and also seems to be some kind of Ruby On Rails clone.

Different articles on the net indicated that Symfony is one of the slower PHP 5 frameworks.

Symfony has very good documentation, complete with a 490 page book online on their website. There seems to be a forms
framework available for it as well.

However, the model layer seems to be uniquely Propel8. It looks like the developer is forced to use this ORM and cannot
easily swap to a different one.

Prado 9
Prado is quite different from the other PHP frameworks mentioned here. Prado is what is called a “component framework”.
The style of programming can be compared to developing an application using Microsoft Visual Basic. Prado can be seen as
a PHP version of ASP.NET.

Prado is a very handy framework to construct desktop-like web applications but is too cumbersome to develop a content-
management system with.

Zend Framework for PHP


The Zend Framework for PHP is almost the de-facto standard for PHP 5 web applications. Created by the same people
behind the PHP engine, this framework is the most obvious one to use.

One of the biggest advantages of the Zend Framework for PHP is that it’s essentially a big library of different modules that
help you with creating a web application. Each module can be used on it’s own without needing any of the other modules
from the framework. However, each module provides hooks to let them all work together in one single application.

5 http://www.cakephp.org

6 http://www.rubyonrails.org

7 http://www.symfony-project.org

8 http://propel.phpdb.org

9 http://www.pradosoft.com

Technology Overview 2
Yellow Duck CMS

The Zend Framework for PHP also supports a Model-View-Controller architecture. This biggest difference between the Zend
Framework and e.g. Code Igniter and CakePHP is that you can define yourself how you want to structure your MVC web
application. You have full control over the directory structure and execution pipeline.

There are also a lot of very useful components included by default in version 1.5 of the framework, which will speed up the
development of the Yellow Duck CMS significantly.

The components we are very interested in are:

• Zend_ACL: access control list and priviliges management


• Zend_Auth: an API for authentication (with support for OpenID and Microsoft InfoCard)
• Zend_Config: handling of configuration data
• Zend_Controller and Zend_View: the MVC implementation of the Zend Framework
• Zend_Db: database access layer
• Zend_Debug: dumping the contents of variables
• Zend_Feed: work with syndicated feeds
• Zend_Filter and Zend_Validate: security by input filtering and validation
• Zend_Form: a complete forms framework (object-oriented)
• Zend_Layout: sitewide layouts for your MVC applications
• Zend_Loader: loads files, classes and resources dynamically
• Zend_Log: logging infrastructure
• Zend_Mail: email sending
• Zend_Registry: a container for storing objects and values
• Zend_Search_Lucene: a flexible search engine
• Zend_Session: an object-oriented approach to using sessions
• Zend_Translate: message translation functionality

Database engine
There are two database engines that will initially be supported by the Yellow Duck CMS. The supported engines will be
MySQL10 and SQLite 11.

General database considerations


Since the Yellow Duck CMS should be portable accross database systems, we try to avoid any database specific
functionality such as views, triggers and stored procedures as not all database systems support them.

MySQL
MySQL is the most commonly supported database engine for PHP web applications. Most hosting companies provide
support for MySQL out of the box.

MySQL is a real database server, running a server process on a machine (either the web server or a separate box). MySQL is
known to be very fast and can handle very high loads.

We should however be careful with multi-user situations where MySQL can corrupt data if you are not carefully programming
this. A good idea might be to use the InnoDB storage engine so that we can support cascading deletes, transactions and
referential integrety.

MySQL is also the obvious choice if you want different developers work with the same database content simultaniously.

10 http://www.mysql.com

11 http://www.sqlite.org

Technology Overview 3
Yellow Duck CMS

SQLite
SQLite is a library that supports a database in a single file. SQLite is very lightweight and doesn’t require you to setup a
database server and maintain it. The library behind SQLite supports most standard SQL constructs and is very easy and
fast.

The advantage of having the entire database in a single file is that you can easily transport the database around, make
backups and restore the database. It also allows different people to work on an individual database or even providing
different databases for different environments (development versus deployment versions of the database).

The drawback however is that multiple developers cannot work on the same database file. Each developer will have it’s own
copy of the database.

Source Code Control


In order to keep track of who does what when developing the Yellow Duck CMS and to provide a history for the code, we
will use source code control software.

CVS 12
CVS used to be the standard in version control software, but is quite outdated nowadays.

The biggest disadvantages of CVS are:

• Commits are not atomic


• Binary files are no handled easily
• Each file has it’s own version, making tagging and branching a nightmare
• To support multiple connections, a PServer needs to be setup which uses a custom protocol

Subversion13
Subversion is the de-facto standard in version control software. Similar to CVS, it’s an open source package.

The big advantages of Subversion are:

• Atomic commits
• Everything is versioned, even renames, directories and metadata
• Can work over a network using the standard WebDAV protocol
• Branching and tagging are cheap operations
• The repository is stored in plain-text files
• Binary files are handled very efficiently

WYSIWYG HTML Editing Components

TinyMCE14
TinyMCE 3.0.5 is compatible with:

• Internet Explorer 5.5 and newer


• FireFox 1.5 and newer
• Safari 3.x and newer

12 http://ximbiot.com/cvs/wiki/

13 http://subversion.tigris.org

14 http://tinymce.moxiecode.com

Technology Overview 4
Yellow Duck CMS

FckEditor15
FckEditor 2.6 is compatible with:

• Internet Explorer 5.5 and newer


• FireFox 1.5 and newer
• Safari 3.x and newer

Flash TextArea 16
Flash Text Area is compatible with:

• Any browser using Flash

JavaScript libraries

Prototype17
To be written...

jQuery 18
To be written...

15 http://www.fckeditor.net

16 http://osflash.org/flashtextarea

17 http://www.prototypejs.org

18 http://jquery.com

Technology Overview 5

You might also like