SlideShare uma empresa Scribd logo
1 de 82
WHO NEEDS RUBY WHEN YOU’VE
     GOT CODEIGNITER?

           Jamie Rumbelow
           @jamierumbelow




     CodeIgniter Conference, London, 2012
HI, I’M JAMIE
PLUG:
codeigniterhandbook.com
SORRY CODEIGNITER,
I’VE GOT ANOTHER GIRL
BUT I STILL ♥ YOU
CODEIGNITER IS MY WIFE,
 RAILS IS MY MISTRESS
RAILS DEVELOPERS?
SMUG.
IN REALITY,
RAILS DEVS ARE RINGOS
“Totally the hot shit”
BOLLOCKS!
RUBY
NOPE!
IT’S ALL ABOUT
THE CONCEPTS
FLEXIBILITY
OTHER FRAMEWORKS
      COPY
CODEIGNITER
  ADAPTS
WHAT CONCEPTS?
CONVENTION
      >
CONFIGURATION
DON’T
 REPEAT
YOURSELF
A DAY IN THE LIFE
MVC
MVC
IT’S ALL ABOUT
   THE DATA
IT’S ALL ABOUT
*PROCESSING THE DATA
FAT
MODEL
SKINNY
CONTROLLER
MY_Model
public function get($where)
{
  return $this->db->where($where)
             ->get($this->_table);
}
PLURAL TABLE NAME
$this->_table = strtolower(plural(str_replace('_model', '', get_class())));
class User_model extends MY_Model { }
                    Text
class Post_model extends MY_Model { }
class Category_model extends MY_Model { }
OBSERVERS
class User_model extends MY_Model
{
   public $before_create = array( 'hash_password' );
}
foreach ($this->before_create as $method)
{
  $data = call_user_func_array(array($this, $method), array($data));
}
public function hash_password($user)
{
  $user['password'] = sha1($user['password']);

    return $user;
}
SCOPES
return $this;
public function confirmed()
{
  $this->db->where('confirmed', TRUE);
  return $this;
}
$this->user->confirmed()->get_all();
VALIDATION
YOU’RE
DOING
  IT
WRONG
class User_model extends MY_Model
{
   public $validate = array(
      array( 'field' => 'username', 'label' => 'Username',
          'rules' => 'required|max_length[20]|alpha_dash' ),
      array( 'field' => 'password', 'label' => 'Password',
          'rules' => 'required|min_length[8]' ),
      array( 'field' => 'email', 'label' => 'Email',
          'rules' => 'valid_email' )
   );
}
foreach ($data as $key => $value)
{
  $_POST[$key] = $value;
}
$this->form_validation->set_rules($this->validate);

return $this->form_validation->run();
MVC
PRESENTERS
<div id="account">
   <h1>
      <?= $this->bank->get($account->bank_id)->name ?> - <?= $account->title ?>
   </h1>
   <p class="information">
      <strong>Name:</strong> <?php if ($account->name): ?><?= $account->name ?><?php else: ?>N/
A<?php endif; ?><br />
      <strong>Number:</strong> <?php if ($account->number): ?><?= $account->number ?><?php
else: ?>N/A<?php endif; ?><br />
      <strong>Sort Code:</strong> <?php if ($account->sort_code): ?><?= substr($account->sort_code,
0, 2) . "-" . substr($account->sort_code, 2, 2) . "-" . substr($account->sort_code, 4, 2) ?><?php else: ?>N/
A<?php endif; ?>
   </p>
   <p class="balances">
      <strong>Total Balance:</strong> <?php if ($account->total_balance): ?><?= "&pound;" .
number_format($account->total_balance) ?><?php else: ?>N/A<?php endif; ?>
      <strong>Available Balance:</strong> <?php if ($account->available_balance): ?><?= "&pound;" .
number_format($account->available_balance) ?><?php else: ?>N/A<?php endif; ?>
   </p>
   <p class="statements">
      <?php if ($this->statements->count_by('account_id', $account->id)): ?>
          <?= anchor('/statements/' . $account->id, 'View Statements') ?>
      <?php else: ?>
          Statements Not Currently Available
      <?php endif; ?>
   </p>
</div>
<div id="account">
  <h1>
    <?= $account->title() ?>
  </h1>
  <p class="information">
    <strong>Name:</strong> <?= $account->name() ?><br />
    <strong>Number:</strong> <?= $account->number() ?><br />
    <strong>Sort Code:</strong> <?= $account->sort_code() ?>
  </p>
  <p class="balances">
    <strong>Total Balance:</strong> <?= $account->total_balance() ?>
    <strong>Available Balance:</strong> <?= $account->available_balance() ?>
  </p>
  <p class="statements">
    <?= $account->statements_link() ?>
  </p>
</div>
ENCAPSULATE
 THE CLASS
class Account_presenter
{
   public function __construct($account)
   {
     $this->account = $account;
   }
}
public function title()
{
  return get_instance()->bank->get($this->account->bank_id)->name .
       "-" . $this->account->title;
}
GETTING BETTER
public function number()
{
  return $this->account->number ?: "N/A";
}
<div id="account">
   <h1>
      <?= $this->bank->get($account->bank_id)->name ?> - <?= $account->title ?>
   </h1>
   <p class="information">
      <strong>Name:</strong> <?php if ($account->name): ?><?= $account->name ?><?php else: ?>N/
A<?php endif; ?><br />
      <strong>Number:</strong> <?php if ($account->number): ?><?= $account->number ?><?php
else: ?>N/A<?php endif; ?><br />
      <strong>Sort Code:</strong> <?php if ($account->sort_code): ?><?= substr($account->sort_code,
0, 2) . "-" . substr($account->sort_code, 2, 2) . "-" . substr($account->sort_code, 4, 2) ?><?php else: ?>N/
A<?php endif; ?>
   </p>
   <p class="balances">
      <strong>Total Balance:</strong> <?php if ($account->total_balance): ?><?= "&pound;" .
number_format($account->total_balance) ?><?php else: ?>N/A<?php endif; ?>
      <strong>Available Balance:</strong> <?php if ($account->available_balance): ?><?= "&pound;" .
number_format($account->available_balance) ?><?php else: ?>N/A<?php endif; ?>
   </p>
   <p class="statements">
      <?php if ($this->statements->count_by('account_id', $account->id)): ?>
          <?= anchor('/statements/' . $account->id, 'View Statements') ?>
      <?php else: ?>
          Statements Not Currently Available
      <?php endif; ?>
   </p>
</div>
<div id="account">
  <h1>
    <?= $account->title() ?>
  </h1>
  <p class="information">
    <strong>Name:</strong> <?= $account->name() ?><br />
    <strong>Number:</strong> <?= $account->number() ?><br />
    <strong>Sort Code:</strong> <?= $account->sort_code() ?>
  </p>
  <p class="balances">
    <strong>Total Balance:</strong> <?= $account->total_balance() ?>
    <strong>Available Balance:</strong> <?= $account->available_balance() ?>
  </p>
  <p class="statements">
    <?= $account->statements_link() ?>
  </p>
</div>
MVC
AUTOLOADING
application/views/controller/action.php
application/views/controller/action.php
application/views/controller/action.php
application/views/posts/action.php
application/views/posts/index.php
Posts::index();

application/views/posts/index.php
Posts::create();

application/views/posts/create.php
Comments::submit_spam();

application/views/comments/submit_spam.php
MY_Controller
_remap()
$view = strtolower(get_class($this)) . '/' . $method;
$view = strtolower(get_class($this)) . '/' . $method;
$view = strtolower(get_class($this)) . '/' . $method;
$this->load->view($view, $this->data);
public function index()
{
  $this->data['users'] = $this->user->get_all();
  $this->data['title'] = 'All Users';
}
HELP!
$this->load->view('shared/_header', $data);
  $this->load->view('users/all', $data);
$this->load->view('shared/_footer', $data);
$this->data['yield'] = $this->load->view($view, $this->data, TRUE);
$this->load->view('layouts/application', $this->data);
<header>
  <h1>My Application</h1>
</header>

<div id="wrapper">
  <?= $yield ?>
</div>

<footer>
  <p>Copyright &copy; 2012</p>
</footer>
THE END
Jamie Rumbelow
    @jamierumbelow
  jamieonsoftware.com



The CodeIgniter Handbook
codeigniterhandbook.com

Mais conteúdo relacionado

Mais procurados

Clever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and TricksClever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and TricksThemePartner
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Atwix
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference ClientDallan Quass
 
WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3Mizanur Rahaman Mizan
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax pluginsInbal Geffen
 
Sins Against Drupal 2
Sins Against Drupal 2Sins Against Drupal 2
Sins Against Drupal 2Aaron Crosman
 
Add edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHPAdd edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHPVineet Kumar Saini
 
Country State City Dropdown in PHP
Country State City Dropdown in PHPCountry State City Dropdown in PHP
Country State City Dropdown in PHPVineet Kumar Saini
 
Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB jhchabran
 
Drupal sins 2016 10-06
Drupal sins 2016 10-06Drupal sins 2016 10-06
Drupal sins 2016 10-06Aaron Crosman
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency InjectionAnton Kril
 
11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrari11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrariRazvan Raducanu, PhD
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using CodeceptionJeroen van Dijk
 
WordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta BoxesWordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta BoxesJeremy Green
 
AngulrJS Overview
AngulrJS OverviewAngulrJS Overview
AngulrJS OverviewEyal Vardi
 
Building secured wordpress themes and plugins
Building secured wordpress themes and pluginsBuilding secured wordpress themes and plugins
Building secured wordpress themes and pluginsTikaram Bhandari
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In RailsLouie Zhao
 

Mais procurados (20)

Clever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and TricksClever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and Tricks
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
Keeping It Simple
Keeping It SimpleKeeping It Simple
Keeping It Simple
 
WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax plugins
 
Sins Against Drupal 2
Sins Against Drupal 2Sins Against Drupal 2
Sins Against Drupal 2
 
Pagination in PHP
Pagination in PHPPagination in PHP
Pagination in PHP
 
Add edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHPAdd edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHP
 
Country State City Dropdown in PHP
Country State City Dropdown in PHPCountry State City Dropdown in PHP
Country State City Dropdown in PHP
 
Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB
 
Drupal sins 2016 10-06
Drupal sins 2016 10-06Drupal sins 2016 10-06
Drupal sins 2016 10-06
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency Injection
 
Amp Up Your Admin
Amp Up Your AdminAmp Up Your Admin
Amp Up Your Admin
 
11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrari11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrari
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
 
WordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta BoxesWordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta Boxes
 
AngulrJS Overview
AngulrJS OverviewAngulrJS Overview
AngulrJS Overview
 
Building secured wordpress themes and plugins
Building secured wordpress themes and pluginsBuilding secured wordpress themes and plugins
Building secured wordpress themes and plugins
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
 

Destaque

BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)VogelDenise
 
Yiddish Right of REVOLUTION & Political CORRUPTION
Yiddish   Right of REVOLUTION & Political CORRUPTIONYiddish   Right of REVOLUTION & Political CORRUPTION
Yiddish Right of REVOLUTION & Political CORRUPTIONVogelDenise
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)VogelDenise
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)VogelDenise
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)VogelDenise
 
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)VogelDenise
 
Unique Styles of Fishing
Unique Styles of FishingUnique Styles of Fishing
Unique Styles of FishingPaul Katsus
 
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)VogelDenise
 
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-CorrectedVogelDenise
 
Programes de formació i inserciò (pfi)
Programes de formació i inserciò  (pfi)Programes de formació i inserciò  (pfi)
Programes de formació i inserciò (pfi)Ferran Piñataro
 
A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...Reno Filla
 
An Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction MachineryAn Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction MachineryReno Filla
 
021013 adecco email (welsh)
021013   adecco email (welsh)021013   adecco email (welsh)
021013 adecco email (welsh)VogelDenise
 
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)VogelDenise
 
061612 Slideshare Analytic Report Through 06/16/12
061612   Slideshare Analytic Report Through 06/16/12061612   Slideshare Analytic Report Through 06/16/12
061612 Slideshare Analytic Report Through 06/16/12VogelDenise
 
CIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties SouthCIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties SouthPrecise Brand Insight
 
Hatian Creole Right of REVOLUTION & Political CORRUPTION
Hatian Creole   Right of REVOLUTION & Political CORRUPTIONHatian Creole   Right of REVOLUTION & Political CORRUPTION
Hatian Creole Right of REVOLUTION & Political CORRUPTIONVogelDenise
 
062112 esperanto (supreme court)
062112   esperanto (supreme court)062112   esperanto (supreme court)
062112 esperanto (supreme court)VogelDenise
 
Persian Right of REVOLUTION & Political CORRUPTION
Persian   Right of REVOLUTION & Political CORRUPTIONPersian   Right of REVOLUTION & Political CORRUPTION
Persian Right of REVOLUTION & Political CORRUPTIONVogelDenise
 

Destaque (20)

BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
 
Yiddish Right of REVOLUTION & Political CORRUPTION
Yiddish   Right of REVOLUTION & Political CORRUPTIONYiddish   Right of REVOLUTION & Political CORRUPTION
Yiddish Right of REVOLUTION & Political CORRUPTION
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
 
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
 
Unique Styles of Fishing
Unique Styles of FishingUnique Styles of Fishing
Unique Styles of Fishing
 
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
 
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
 
Programes de formació i inserciò (pfi)
Programes de formació i inserciò  (pfi)Programes de formació i inserciò  (pfi)
Programes de formació i inserciò (pfi)
 
A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...
 
An Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction MachineryAn Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction Machinery
 
021013 adecco email (welsh)
021013   adecco email (welsh)021013   adecco email (welsh)
021013 adecco email (welsh)
 
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
 
061612 Slideshare Analytic Report Through 06/16/12
061612   Slideshare Analytic Report Through 06/16/12061612   Slideshare Analytic Report Through 06/16/12
061612 Slideshare Analytic Report Through 06/16/12
 
CIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties SouthCIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties South
 
Hatian Creole Right of REVOLUTION & Political CORRUPTION
Hatian Creole   Right of REVOLUTION & Political CORRUPTIONHatian Creole   Right of REVOLUTION & Political CORRUPTION
Hatian Creole Right of REVOLUTION & Political CORRUPTION
 
062112 esperanto (supreme court)
062112   esperanto (supreme court)062112   esperanto (supreme court)
062112 esperanto (supreme court)
 
Persian Right of REVOLUTION & Political CORRUPTION
Persian   Right of REVOLUTION & Political CORRUPTIONPersian   Right of REVOLUTION & Political CORRUPTION
Persian Right of REVOLUTION & Political CORRUPTION
 
Essay Parts
Essay PartsEssay Parts
Essay Parts
 

Semelhante a Who Needs Ruby When You've Got CodeIgniter

Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsClinton Dreisbach
 
Dealing With Legacy PHP Applications
Dealing With Legacy PHP ApplicationsDealing With Legacy PHP Applications
Dealing With Legacy PHP ApplicationsViget Labs
 
前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 sessionRANK LIU
 
Bag Of Tricks From Iusethis
Bag Of Tricks From IusethisBag Of Tricks From Iusethis
Bag Of Tricks From IusethisMarcus Ramberg
 
Practical PHP by example Jan Leth-Kjaer
Practical PHP by example   Jan Leth-KjaerPractical PHP by example   Jan Leth-Kjaer
Practical PHP by example Jan Leth-KjaerCOMMON Europe
 
TDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for BusinessTDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for Businesstdc-globalcode
 
You're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp OrlandoYou're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp OrlandoChris Scott
 
Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentationshangbaby
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfAppweb Coders
 
Tidy Up Your Code
Tidy Up Your CodeTidy Up Your Code
Tidy Up Your CodeAbbas Ali
 
Login and Registration form using oop in php
Login and Registration form using oop in phpLogin and Registration form using oop in php
Login and Registration form using oop in phpherat university
 
Improving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectImproving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectBartek Igielski
 
Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018Elliot Taylor
 
PHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersPHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersKacper Gunia
 

Semelhante a Who Needs Ruby When You've Got CodeIgniter (20)

Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
 
Dealing With Legacy PHP Applications
Dealing With Legacy PHP ApplicationsDealing With Legacy PHP Applications
Dealing With Legacy PHP Applications
 
前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session
 
Smarty
SmartySmarty
Smarty
 
Bag Of Tricks From Iusethis
Bag Of Tricks From IusethisBag Of Tricks From Iusethis
Bag Of Tricks From Iusethis
 
Developing for Business
Developing for BusinessDeveloping for Business
Developing for Business
 
Os Nixon
Os NixonOs Nixon
Os Nixon
 
Practical PHP by example Jan Leth-Kjaer
Practical PHP by example   Jan Leth-KjaerPractical PHP by example   Jan Leth-Kjaer
Practical PHP by example Jan Leth-Kjaer
 
TDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for BusinessTDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for Business
 
You're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp OrlandoYou're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp Orlando
 
Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentation
 
Zero to SOLID
Zero to SOLIDZero to SOLID
Zero to SOLID
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
 
Unit testing zend framework apps
Unit testing zend framework appsUnit testing zend framework apps
Unit testing zend framework apps
 
Tidy Up Your Code
Tidy Up Your CodeTidy Up Your Code
Tidy Up Your Code
 
Login and Registration form using oop in php
Login and Registration form using oop in phpLogin and Registration form using oop in php
Login and Registration form using oop in php
 
Improving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectImproving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community Project
 
Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018
 
PHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersPHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4Developers
 
Framework
FrameworkFramework
Framework
 

Mais de ciconf

CICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your MindCICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your Mindciconf
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniterciconf
 
Work Queues
Work QueuesWork Queues
Work Queuesciconf
 
Pretty Good Practices/Productivity
Pretty Good Practices/ProductivityPretty Good Practices/Productivity
Pretty Good Practices/Productivityciconf
 
Hosting as a Framework
Hosting as a FrameworkHosting as a Framework
Hosting as a Frameworkciconf
 
Zero to Hero in Start-ups
Zero to Hero in Start-upsZero to Hero in Start-ups
Zero to Hero in Start-upsciconf
 
How to use ORM
How to use ORMHow to use ORM
How to use ORMciconf
 

Mais de ciconf (7)

CICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your MindCICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your Mind
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniter
 
Work Queues
Work QueuesWork Queues
Work Queues
 
Pretty Good Practices/Productivity
Pretty Good Practices/ProductivityPretty Good Practices/Productivity
Pretty Good Practices/Productivity
 
Hosting as a Framework
Hosting as a FrameworkHosting as a Framework
Hosting as a Framework
 
Zero to Hero in Start-ups
Zero to Hero in Start-upsZero to Hero in Start-ups
Zero to Hero in Start-ups
 
How to use ORM
How to use ORMHow to use ORM
How to use ORM
 

Último

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Último (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Who Needs Ruby When You've Got CodeIgniter

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n