test your might - framework combat
DESCRIPTION
An Introduction to both Symfony and Ruby on Rails frameworks and a comparison of their respective PHP and Ruby languages.TRANSCRIPT
![Page 1: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/1.jpg)
Test Your MightA Framework Showdown
Monday, October 19, 2009
![Page 2: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/2.jpg)
Symfony Virtuoso
Brent ShafferRails Ninja
Travis [email protected]/travisroberts
[email protected]/bshaffer
Monday, October 19, 2009
![Page 3: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/3.jpg)
Why Ruby is Awesome
It’s intuitive
guesses are usually correct
Very readable and concise
Chain methods (try that in PHP!)
"Hello, world!".reverse.upcase.split.first=> "!DLROW"
Monday, October 19, 2009
![Page 4: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/4.jpg)
Why Ruby is Awesome
Everything is an object! (pure OOP)
"Hello, world!".reverse=> "!dlrow ,olleH"
12.5.floor=> 12
["e", "b", "d", "c", "a"].sort=> ["a", "b", "c", "d", "e"]
Monday, October 19, 2009
![Page 5: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/5.jpg)
Why Ruby is Awesome
Awesome Syntax
Method punctuation (is_admin?, delete!)
Curly braces not required
Optional parenthesis for method calls
Instance variables are nothing special
Implicit method returns
NO SEMICOLONS!!!!
Monday, October 19, 2009
![Page 6: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/6.jpg)
Why Ruby is Awesome
Monday, October 19, 2009
![Page 7: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/7.jpg)
Why Ruby is Awesome
Blocks5.times do |x| puts x * 2end
["1", "2", "3", "4"].each do |x| p x.to_iend
10.downto(1) do |x| puts "Number: #{x}"end
Monday, October 19, 2009
![Page 8: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/8.jpg)
Why Ruby is Awesome
Great for scripting
maintenance tasks
convenience scripts
Monday, October 19, 2009
![Page 9: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/9.jpg)
Why PHP is Awesome
PHP jobs vastly outnumber Ruby jobs
Ubiquity
One-fifth of all open source code being written today is written in PHP.
PHP is installed on over 20 million websites and 1 million web servers
Monday, October 19, 2009
![Page 10: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/10.jpg)
Why PHP is Awesome
Interpretive Language
Great for scripting
Evolving
Very Active Community
Monday, October 19, 2009
![Page 11: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/11.jpg)
Why PHP is Awesome
!
Data found here in PDF format.
Monday, October 19, 2009
![Page 12: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/12.jpg)
Why PHP is Awesome
!
Data found here in PDF format.
Monday, October 19, 2009
![Page 13: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/13.jpg)
Why PHP is AwesomeBuilt-in Functions
C Extensions
PECL
Anonymous Functions / Namespacing
Monday, October 19, 2009
![Page 14: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/14.jpg)
PHP SyntaxGet Over Yourself
$var = new MyClass();
$days = range(1, 31);
$class->each(function($i){ echo $i; });
$hash = array('this' => 'one', 'is' => 'associative');
$arr = array('this', 'is', 'an', 'array');
function is_best_language($lang) { return strtoupper($lang) == 'PHP'; }
var = MyClass.new
days = (1..31).to_a
myclass.each { |i| puts i }
hash = {'this' => 'one', 'is' => 'associative'}
arr = ['this', 'is', 'an', 'array']
def best_language?(lang) lang.downcase == 'ruby' end
PHP Ruby
Monday, October 19, 2009
![Page 15: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/15.jpg)
Why PHP is AwesomeCoincidence??
Monday, October 19, 2009
![Page 16: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/16.jpg)
Why Rails is Awesome
It uses Ruby!
MVC FTW
Rails community is awesome
Monday, October 19, 2009
![Page 17: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/17.jpg)
Why Rails is Awesome
RubyGems
bundled code libraries
rmagick, haml, capistrano, etc.
Plugins
authlogic, exception notifier, etc.
Monday, October 19, 2009
![Page 18: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/18.jpg)
Why Rails is Awesome
Convention over Configuration
it makes logical assumptions
db table names, file names, etc.
Monday, October 19, 2009
![Page 19: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/19.jpg)
Why Rails is Awesome
ActiveRecord ORM# get specified recordsUser.allUser.first
# get all users whose first name is "John"User.all(:conditions => ["name LIKE ?", "John"])
# get all users and their related profile record (eager load)User.all(:include => :profile)
Monday, October 19, 2009
![Page 20: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/20.jpg)
Why Rails is Awesome
Query caching - it’s automagic
Monday, October 19, 2009
![Page 21: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/21.jpg)
Why Rails is Awesome
Easy deployment with Capistrano
Testing - lots of choices
cucumber/rspec, shoulda, test::unit
Open-source
Monday, October 19, 2009
![Page 22: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/22.jpg)
PHP Web Framework using the MVC Design Pattern
Doctrine ORM - based on Hibernate
Incorporates concepts from Mojavi (MVC implementation), Rails (routing) and many other open source projects
Why Symfony is Awesome
Monday, October 19, 2009
![Page 23: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/23.jpg)
Why Symfony is AwesomeDoctrine ORM
// Magic Methods$results = Doctrine::getTable('User')->findAll();
// Hydration Methods$results = Doctrine::getTable('User') ->createQuery() ->where('count > ?', 2) ->execute(Doctrine::HYDRATE_ARRAY);
// Doctrine 2.0$results = User::findAll();
Symfony Components
Monday, October 19, 2009
![Page 24: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/24.jpg)
Why Symfony is Awesome
Form Framework
Widgets and Validators
As complex or simple as you want
Easily handles difficult form logic
Optionally independent of models
Monday, October 19, 2009
![Page 25: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/25.jpg)
Cascading Configurations
Project > Application > Module
Write your own handlers
Philosophy - Less Magic
Young Community
Quickly Evolving
Why Symfony is Awesome
Monday, October 19, 2009
![Page 26: Test Your Might - Framework Combat](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b6fe8e4a79590a338b45d3/html5/thumbnails/26.jpg)
Monday, October 19, 2009