From 1dd09d0158d5b5961b8bce4db0b9a142700480d5 Mon Sep 17 00:00:00 2001 From: Derek Allard Date: Sun, 9 Dec 2007 20:00:43 +0000 Subject: userguide fixes, typos, examples. --- user_guide/database/configuration.html | 141 +----------------- user_guide/general/caching.html | 116 +-------------- user_guide/libraries/uri.html | 253 +-------------------------------- user_guide/overview/at_a_glance.html | 173 +--------------------- 4 files changed, 4 insertions(+), 679 deletions(-) (limited to 'user_guide') diff --git a/user_guide/database/configuration.html b/user_guide/database/configuration.html index 9c679c967..b8504184c 100644 --- a/user_guide/database/configuration.html +++ b/user_guide/database/configuration.html @@ -1,140 +1 @@ - - - - -CodeIgniter User Guide : Database Configuration - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -

CodeIgniter User Guide Version 1.5.4

-
- - - - - - - - - -
- - - -
- - - -
- - -

Database Configuration

- -

CodeIgniter has a config file that lets you store your database connection values (username, password, database name, etc.). -The config file is located at:

- -

application/config/database.php

- -

The config settings are stored in a multi-dimensional array with this prototype:

- -$db['default']['hostname'] = "localhost";
-$db['default']['username'] = "root";
-$db['default']['password'] = "";
-$db['default']['database'] = "database_name";
-$db['default']['dbdriver'] = "mysql";
-$db['default']['dbprefix'] = "";
-$db['default']['pconnect'] = TRUE;
-$db['default']['db_debug'] = FALSE;
-$db['default']['active_r'] = TRUE;
- -

The reason we use a multi-dimensional array rather than a more simple one is to permit you to optionally store -multiple sets of connection values. If, for example, you run multiple environments (development, production, test, etc.) -under a single installation, you can set up a connection group for each, then switch between groups as needed. -For example, to set up a "test" environment you would do this:

- -$db['test']['hostname'] = "localhost";
-$db['test']['username'] = "root";
-$db['test']['password'] = "";
-$db['test']['database'] = "database_name";
-$db['test']['dbdriver'] = "mysql";
-$db['test']['dbprefix'] = "";
-$db['test']['pconnect'] = TRUE;
-$db['test']['db_debug'] = FALSE;
-$db['test']['active_r'] = TRUE;
- - -

Then, to globally tell the system to use that group you would set this variable located in the config file:

- -$active_group = "test"; - -

Note: The name "test" is arbitrary. It can be anything you want. By default we've used the word "default" -for the primary connection, but it too can be renamed to something more relevant to your project.

- -

Explanation of Values:

- - - -

Note: Depending on what database platform you are using (MySQL, Postgre, etc.) -not all values will be needed. For example, when using SQLite you will not need to supply a username or password, and -the database name will be the path to your database file. The information above assumes you are using MySQL.

- - - -
- - - - - - - \ No newline at end of file + CodeIgniter User Guide : Database Configuration

CodeIgniter User Guide Version 1.5.4


Database Configuration

CodeIgniter has a config file that lets you store your database connection values (username, password, database name, etc.). The config file is located at:

application/config/database.php

The config settings are stored in a multi-dimensional array with this prototype:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['active_r'] = TRUE;

The reason we use a multi-dimensional array rather than a more simple one is to permit you to optionally store multiple sets of connection values. If, for example, you run multiple environments (development, production, test, etc.) under a single installation, you can set up a connection group for each, then switch between groups as needed. For example, to set up a "test" environment you would do this:

$db['test']['hostname'] = "localhost";
$db['test']['username'] = "root";
$db['test']['password'] = "";
$db['test']['database'] = "database_name";
$db['test']['dbdriver'] = "mysql";
$db['test']['dbprefix'] = "";
$db['test']['pconnect'] = TRUE;
$db['test']['db_debug'] = FALSE;
$db['test']['active_r'] = TRUE;

Then, to globally tell the system to use that group you would set this variable located in the config file:

$active_group = "test";

Note: The name "test" is arbitrary. It can be anything you want. By default we've used the word "default" for the primary connection, but it too can be renamed to something more relevant to your project.

Explanation of Values:

Note: Depending on what database platform you are using (MySQL, Postgre, etc.) not all values will be needed. For example, when using SQLite you will not need to supply a username or password, and the database name will be the path to your database file. The information above assumes you are using MySQL.

\ No newline at end of file diff --git a/user_guide/general/caching.html b/user_guide/general/caching.html index c9a38a965..6da925f9a 100644 --- a/user_guide/general/caching.html +++ b/user_guide/general/caching.html @@ -1,115 +1 @@ - - - - -CodeIgniter User Guide : Web Page Caching - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -

CodeIgniter User Guide Version 1.5.4

-
- - - - - - - - - -
- - -
- - - -
- - -

Web Page Caching

- -

CodeIgniter lets you cache your pages in order to achieve maximum performance.

- -

Although CodeIgniter is quite fast, the amount of dynamic information you display in your pages will correlate directly to the -server resources, memory, and processing cycles utilized, which affect your page load speeds. -By caching your pages, since they are saved in their fully rendered state, you can achieve performance that nears that of static web pages.

- - -

How Does Caching Work?

- -

Caching can be enabled on a per-page basis, and you can set the length of time that a page should remain cached before being refreshed. -When a page is loaded for the first time, the cache file will be written to your system/cache folder. On subsequent page loads the cache file will be retrieved -and sent to the requesting user's browser. If it has expired, it will be deleted and refreshed before being sent to the browser.

- -

Note: The Benchmark tag is not cached so you can still view your page load speed when caching is enabled.

- -

Enabling Caching

- -

To enable caching, put the following tag in any of your controller functions:

- -$this->output->cache(n); - -

Where n is the number of minutes you wish the page to remain cached between refreshes.

- -

The above tag can go anywhere within a function. It is not affected by the order that it appears, so place it wherever it seems -most logical to you. Once the tag is in place, your pages will begin being cached.

- -

Warning: Because of the way CodeIgniter stores content for output, caching will only work if you are generating display for your controller with a view.

-

Note: Before the cache files can be written you must set the file permissions on your -system/cache folder such that it is writable (666 is usually appropriate).

- -

Deleting Caches

- -

If you no longer wish to cache a file you can remove the caching tag and it will no longer be refreshed when it expires. Note: -Removing the tag will not delete the cache immediately. It will have to expire normally. If you need to remove it earlier you -will need to manually delete it from your cache folder.

- - - -
- - - - - - - \ No newline at end of file + CodeIgniter User Guide : Web Page Caching

CodeIgniter User Guide Version 1.5.4


Web Page Caching

CodeIgniter lets you cache your pages in order to achieve maximum performance.

Although CodeIgniter is quite fast, the amount of dynamic information you display in your pages will correlate directly to the server resources, memory, and processing cycles utilized, which affect your page load speeds. By caching your pages, since they are saved in their fully rendered state, you can achieve performance that nears that of static web pages.

How Does Caching Work?

Caching can be enabled on a per-page basis, and you can set the length of time that a page should remain cached before being refreshed. When a page is loaded for the first time, the cache file will be written to your system/cache folder. On subsequent page loads the cache file will be retrieved and sent to the requesting user's browser. If it has expired, it will be deleted and refreshed before being sent to the browser.

Note: The Benchmark tag is not cached so you can still view your page load speed when caching is enabled.

Enabling Caching

To enable caching, put the following tag in any of your controller functions:

$this->output->cache(n);

Where n is the number of minutes you wish the page to remain cached between refreshes.

The above tag can go anywhere within a function. It is not affected by the order that it appears, so place it wherever it seems most logical to you. Once the tag is in place, your pages will begin being cached.

Warning: Because of the way CodeIgniter stores content for output, caching will only work if you are generating display for your controller with a view.

Note: Before the cache files can be written you must set the file permissions on your system/cache folder such that it is writable (666 is usually appropriate, some servers require 777).

Deleting Caches

If you no longer wish to cache a file you can remove the caching tag and it will no longer be refreshed when it expires. Note: Removing the tag will not delete the cache immediately. It will have to expire normally. If you need to remove it earlier you will need to manually delete it from your cache folder.

\ No newline at end of file diff --git a/user_guide/libraries/uri.html b/user_guide/libraries/uri.html index 0205d97e7..4b71480bb 100644 --- a/user_guide/libraries/uri.html +++ b/user_guide/libraries/uri.html @@ -1,252 +1 @@ - - - - -CodeIgniter User Guide : URI Class - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -

CodeIgniter User Guide Version 1.5.4

-
- - - - - - - - - -
- - -
- - - -
- - -

URI Class

- -

The URI Class provides functions that help you retrieve information from your URI strings. If you use URI routing, you can -also retrieve information about the re-routed segments.

- -

Note: This class is initialized automatically by the system so there is no need to do it manually.

- -

$this->uri->segment(n)

- -

Permits you to retrieve a specific segment. Where n is the segment number you wish to retrieve. -Segments are numbered from left to right. For example, if your full URL is this:

- -http://www.your-site.com/index.php/news/local/metro/crime_is_up - -

The segment numbers would be this:

- -
    -
  1. news
  2. -
  3. local
  4. -
  5. metro
  6. -
  7. crime_is_up
  8. -
- -

By default the function returns FALSE (boolean) if the segment does not exist. There is an optional second parameter that -permits you to set your own default value if the segment is missing. -For example, this would tell the function to return the number zero in the event of failure:

- -$product_id = $this->uri->segment(3, 0); - -

It helps avoid having to write code like this:

- -if ($this->uri->segment(3) === FALSE)
-{
-    $product_id = 0;
-}
-else
-{
-    $product_id = $this->uri->segment(3);
-}
-
- -

$this->uri->rsegment(n)

- -

This function is identical to the previous one, except that it lets you retrieve a specific segment from your -re-routed URI in the event you are using CodeIgniter's URI Routing feature.

- - -

$this->uri->slash_segment(n)

- -

This function is almost identical to $this->uri->segment(), except it adds a trailing and/or leading slash based on the second -parameter. If the parameter is not used, a trailing slash added. Examples:

- -$this->uri->slash_segment(3);
-$this->uri->slash_segment(3, 'leading');
-$this->uri->slash_segment(3, 'both');
- -

Returns:

- -
    -
  1. segment/
  2. -
  3. /segment
  4. -
  5. /segment/
  6. -
- - -

$this->uri->slash_rsegment(n)

- -

This function is identical to the previous one, except that it lets you add slashes a specific segment from your -re-routed URI in the event you are using CodeIgniter's URI Routing feature.

- - - -

$this->uri->uri_to_assoc(n)

- -

This function lets you turn URI segments into and associative array of key/value pairs. Consider this URI:

- -index.php/user/search/name/joe/location/UK/gender/male - -

Using this function you can turn the URI into an associative array with this prototype:

- -[array]
-(
-    'name' => 'joe'
-    'location' => 'UK'
-    'gender' => 'male'
-)
- -

The first parameter of the function lets you set an offset. By default it is set to 3 since your -URI will normally contain a controller/function in the first and second segments. Example:

- - -$array = $this->uri->uri_to_assoc(3);
-
-echo $array['name']; -
- - -

The second parameter lets you set default key names, so that the array returned by the function will always contain expected indexes, even if missing from the URI. Example:

- - -$default = array('name', 'gender', 'location', 'type', 'sort');
-
-$array = $this->uri->uri_to_assoc(3, $default);
- -

If the URI does not contain a value in your default, an array index will be set to that name, with a value of FALSE.

- -

Lastly, if a corresponding value is not found for a given key (if there is an odd number of URI segments) the value will be set to FALSE (boolean).

- - -

$this->uri->ruri_to_assoc(n)

- -

This function is identical to the previous one, except that it creates an associative array using the -re-routed URI in the event you are using CodeIgniter's URI Routing feature.

- - -

$this->uri->assoc_to_uri()

- -

Takes an associative array as input and generates a URI string from it. The array keys will be included in the string. Example:

- -$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
-
-$str = $this->uri->assoc_to_uri($array);
-
-// Produces: product/shoes/size/large/color/red -
- - -

$this->uri->uri_string()

- -

Returns a string with the complete URI. For example, if this is your full URL:

- -http://www.your-site.com/index.php/news/local/345 - -

The function would return this:

- -news/local/345 - - -

$this->uri->ruri_string(n)

- -

This function is identical to the previous one, except that it returns the -re-routed URI in the event you are using CodeIgniter's URI Routing feature.

- - - -

$this->uri->total_segments()

- -

Returns the total number of segments.

- - -

$this->uri->total_rsegments(n)

- -

This function is identical to the previous one, except that it returns the total number of segments in your -re-routed URI in the event you are using CodeIgniter's URI Routing feature.

- - - -

$this->uri->segment_array()

- -

Returns an array containing the URI segments. For example:

- - -$segs = $this->uri->segment_array();
-
-foreach ($segs as $segment)
-{
-    echo $segment;
-    echo '<br />';
-}
- -

$this->uri->rsegment_array(n)

- -

This function is identical to the previous one, except that it returns the array of segments in your -re-routed URI in the event you are using CodeIgniter's URI Routing feature. - - - -

- - - - - - - \ No newline at end of file + CodeIgniter User Guide : URI Class

CodeIgniter User Guide Version 1.5.4


URI Class

The URI Class provides functions that help you retrieve information from your URI strings. If you use URI routing, you can also retrieve information about the re-routed segments.

Note: This class is initialized automatically by the system so there is no need to do it manually.

$this->uri->segment(n)

Permits you to retrieve a specific segment. Where n is the segment number you wish to retrieve. Segments are numbered from left to right. For example, if your full URL is this:

http://www.your-site.com/index.php/news/local/metro/crime_is_up

The segment numbers would be this:

  1. news
  2. local
  3. metro
  4. crime_is_up

By default the function returns FALSE (boolean) if the segment does not exist. There is an optional second parameter that permits you to set your own default value if the segment is missing. For example, this would tell the function to return the number zero in the event of failure:

$product_id = $this->uri->segment(3, 0);

It helps avoid having to write code like this:

if ($this->uri->segment(3) === FALSE)
{
    $product_id = 0;
}
else
{
    $product_id = $this->uri->segment(3);
}

$this->uri->rsegment(n)

This function is identical to the previous one, except that it lets you retrieve a specific segment from your re-routed URI in the event you are using CodeIgniter's URI Routing feature.

$this->uri->slash_segment(n)

This function is almost identical to $this->uri->segment(), except it adds a trailing and/or leading slash based on the second parameter. If the parameter is not used, a trailing slash added. Examples:

$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');

Returns:

  1. segment/
  2. /segment
  3. /segment/

$this->uri->slash_rsegment(n)

This function is identical to the previous one, except that it lets you add slashes a specific segment from your re-routed URI in the event you are using CodeIgniter's URI Routing feature.

$this->uri->uri_to_assoc(n)

This function lets you turn URI segments into and associative array of key/value pairs. Consider this URI:

index.php/user/search/name/joe/location/UK/gender/male

Using this function you can turn the URI into an associative array with this prototype:

[array]
(
    'name' => 'joe'
    'location' => 'UK'
    'gender' => 'male'
)

The first parameter of the function lets you set an offset. By default it is set to 3 since your URI will normally contain a controller/function in the first and second segments. Example:

$array = $this->uri->uri_to_assoc(3);

echo $array['name'];

The second parameter lets you set default key names, so that the array returned by the function will always contain expected indexes, even if missing from the URI. Example:

$default = array('name', 'gender', 'location', 'type', 'sort');

$array = $this->uri->uri_to_assoc(3, $default);

If the URI does not contain a value in your default, an array index will be set to that name, with a value of FALSE.

Lastly, if a corresponding value is not found for a given key (if there is an odd number of URI segments) the value will be set to FALSE (boolean).

$this->uri->ruri_to_assoc(n)

This function is identical to the previous one, except that it creates an associative array using the re-routed URI in the event you are using CodeIgniter's URI Routing feature.

$this->uri->assoc_to_uri()

Takes an associative array as input and generates a URI string from it. The array keys will be included in the string. Example:

$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');

$str = $this->uri->assoc_to_uri($array);

// Produces: product/shoes/size/large/color/red

$this->uri->uri_string()

Returns a string with the complete URI. For example, if this is your full URL:

http://www.your-site.com/index.php/news/local/345

The function would return this:

/news/local/345

$this->uri->ruri_string(n)

This function is identical to the previous one, except that it returns the re-routed URI in the event you are using CodeIgniter's URI Routing feature.

$this->uri->total_segments()

Returns the total number of segments.

$this->uri->total_rsegments(n)

This function is identical to the previous one, except that it returns the total number of segments in your re-routed URI in the event you are using CodeIgniter's URI Routing feature.

$this->uri->segment_array()

Returns an array containing the URI segments. For example:

$segs = $this->uri->segment_array();

foreach ($segs as $segment)
{
    echo $segment;
    echo '<br />';
}

$this->uri->rsegment_array(n)

This function is identical to the previous one, except that it returns the array of segments in your re-routed URI in the event you are using CodeIgniter's URI Routing feature.

\ No newline at end of file diff --git a/user_guide/overview/at_a_glance.html b/user_guide/overview/at_a_glance.html index 0294cef4e..8614daed3 100644 --- a/user_guide/overview/at_a_glance.html +++ b/user_guide/overview/at_a_glance.html @@ -1,172 +1 @@ - - - - -CodeIgniter User Guide : CodeIgniter at a Glance - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -

CodeIgniter User Guide Version 1.5.4

-
- - - - - - - - - -
- - -
- - - -
- -

CodeIgniter at a Glance

- - -

CodeIgniter is an Application Framework

- -

CodeIgniter is a toolkit for people who build web application using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code -from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and -logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by -minimizing the amount of code needed for a given task.

- -

CodeIgniter is Free

-

CodeIgniter is licensed under an Apache/BSD-style open source license so you can use it however you please. -For more information please read the license agreement.

- - -

CodeIgniter Runs on PHP 4

-

CodeIgniter is written to be compatible with PHP 4. Although we would have loved to take advantage of the better object handling -in PHP 5 since it would have simplified some things we had to find creative solutions for (looking your way, multiple inheritance), -at the time of this writing PHP 5 is not in widespread use, which means we would be alienating most of our -potential audience. Major OS vendors like RedHat have yet to support PHP 5, and they are unlikely to do so until 2007, so -we felt that it did not serve the best interests of the PHP community to write CodeIgniter in PHP 5.

- -

Note: CodeIgniter will run on PHP 5. It simply does not take advantage of any native features that are only available in that version.

- -

CodeIgniter is Light Weight

-

Truly light weight. The core system requires only a few very small libraries. This is in stark contrast to many frameworks that require significantly more resources. -Additional libraries are loaded dynamically upon request, based on your needs for a given process, so the base system -is very lean and quite fast. -

- -

CodeIgniter is Fast

-

Really fast. We challenge you to find a framework that has better performance then CodeIgniter.

- - -

CodeIgniter Uses M-V-C

-

CodeIgniter uses the Model-View-Controller approach, which allows great separation between logic and presentation. -This is particularly good for projects in which designers are working with your template files, as the code these file contain will be minimized. We describe MVC in more detail on its own page.

- -

CodeIgniter Generates Clean URLs

-

The URLs generated by CodeIgniter are clean and search-engine friendly. Rather than using the standard "query string" -approach to URLs that is synonymous with dynamic systems, CodeIgniter uses a segment-based approach:

- -www.your-site.com/news/article/345 - -

Note: By default the index.php file is included in the URL but it can be removed using a simple .htaccess file.

- -

CodeIgniter Packs a Punch

-

CodeIgniter comes with full-range of libraries that enable the most commonly needed web development tasks, -like accessing a database, sending email, validating form data, maintaining sessions, manipulating images, working with XML-RPC data and -much more.

- -

CodeIgniter is Extensible

-

The system can be easily extended through the use of plugins and helper libraries, or through class extensions or system hooks.

- - -

CodeIgniter Does Not Require a Template Engine

-

Although CodeIgniter does come with a simple template parser that can be optionally used, it does not force you to use one. - -Template engines simply can not match the performance of native PHP, and the syntax that must be learned to use a template -engine is usually only marginally easier than learning the basics of PHP. Consider this block of PHP code:

- -<ul>
-
-<?php foreach ($addressbook as $name):?>
-
-<li><?=$name?></li>
-
-<?php endforeach; ?>
-
-</ul>
- -

Contrast this with the pseudo-code used by a template engine:

- -<ul>
-
-{foreach from=$addressbook item="name"}
-
-<li>{$name}</li>
-
-{/foreach}
-
-</ul>
- -

Yes, the template engine example is a bit cleaner, but it comes at the price of performance, as the pseudo-code must be converted -back into PHP to run. Since one of our goals is maximum performance, we opted to not require the use of a template engine.

- - -

CodeIgniter is Thoroughly Documented

-

Programmers love to code and hate to write documentation. We're no different, of course, but -since documentation is as important as the code itself, -we are committed to doing it. Our source code is extremely clean and well commented as well.

- - -

CodeIgniter has a Friendly Community of Users

- -

Our growing community of users can be seen actively participating in our Community Forums.

- - -
- - - - - - - \ No newline at end of file + CodeIgniter User Guide : CodeIgniter at a Glance

CodeIgniter User Guide Version 1.5.4


CodeIgniter at a Glance

CodeIgniter is an Application Framework

CodeIgniter is a toolkit for people who build web application using PHP. Its goal is to enable you to develop projects much faster than you could if you were writing code from scratch, by providing a rich set of libraries for commonly needed tasks, as well as a simple interface and logical structure to access these libraries. CodeIgniter lets you creatively focus on your project by minimizing the amount of code needed for a given task.

CodeIgniter is Free

CodeIgniter is licensed under an Apache/BSD-style open source license so you can use it however you please. For more information please read the license agreement.

CodeIgniter Runs on PHP 4

CodeIgniter is written to be compatible with PHP 4. Although we would have loved to take advantage of the better object handling in PHP 5 since it would have simplified some things we had to find creative solutions for (looking your way, multiple inheritance), at the time of this writing PHP 5 is not in widespread use, which means we would be alienating most of our potential audience. Major OS vendors like RedHat have yet to support PHP 5, and they are unlikely to do so until 2007, so we felt that it did not serve the best interests of the PHP community to write CodeIgniter in PHP 5.

Note: CodeIgniter will run on PHP 5. It simply does not take advantage of any native features that are only available in that version.

CodeIgniter is Light Weight

Truly light weight. The core system requires only a few very small libraries. This is in stark contrast to many frameworks that require significantly more resources. Additional libraries are loaded dynamically upon request, based on your needs for a given process, so the base system is very lean and quite fast.

CodeIgniter is Fast

Really fast. We challenge you to find a framework that has better performance than CodeIgniter.

CodeIgniter Uses M-V-C

CodeIgniter uses the Model-View-Controller approach, which allows great separation between logic and presentation. This is particularly good for projects in which designers are working with your template files, as the code these file contain will be minimized. We describe MVC in more detail on its own page.

CodeIgniter Generates Clean URLs

The URLs generated by CodeIgniter are clean and search-engine friendly. Rather than using the standard "query string" approach to URLs that is synonymous with dynamic systems, CodeIgniter uses a segment-based approach:

www.your-site.com/news/article/345

Note: By default the index.php file is included in the URL but it can be removed using a simple .htaccess file.

CodeIgniter Packs a Punch

CodeIgniter comes with full-range of libraries that enable the most commonly needed web development tasks, like accessing a database, sending email, validating form data, maintaining sessions, manipulating images, working with XML-RPC data and much more.

CodeIgniter is Extensible

The system can be easily extended through the use of plugins and helper libraries, or through class extensions or system hooks.

CodeIgniter Does Not Require a Template Engine

Although CodeIgniter does come with a simple template parser that can be optionally used, it does not force you to use one. Template engines simply can not match the performance of native PHP, and the syntax that must be learned to use a template engine is usually only marginally easier than learning the basics of PHP. Consider this block of PHP code:

<ul>

<?php foreach ($addressbook as $name):?>

<li><?=$name?></li>

<?php endforeach; ?>

</ul>

Contrast this with the pseudo-code used by a template engine:

<ul>

{foreach from=$addressbook item="name"}

<li>{$name}</li>

{/foreach}

</ul>

Yes, the template engine example is a bit cleaner, but it comes at the price of performance, as the pseudo-code must be converted back into PHP to run. Since one of our goals is maximum performance, we opted to not require the use of a template engine.

CodeIgniter is Thoroughly Documented

Programmers love to code and hate to write documentation. We're no different, of course, but since documentation is as important as the code itself, we are committed to doing it. Our source code is extremely clean and well commented as well.

CodeIgniter has a Friendly Community of Users

Our growing community of users can be seen actively participating in our Community Forums.

\ No newline at end of file -- cgit v1.2.3-24-g4f1b