Ruby for PHP developers
Upcoming SlideShare
Loading in...5

Ruby for PHP developers






Total Views
Views on SlideShare
Embed Views



12 Embeds 3,126

http://localhost 1464 831 453 147 102
http://dev.localhost 55 44 11 8 8 2 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Ruby for PHP developers Ruby for PHP developers Presentation Transcript

  • Ruby for PHPDevelopers By Max Titov Ninja Software Operations
  • Objective: learn and compare▶ What is Ruby and where it is come from?▶ Why Ruby?▶ Ruby basics▶ Ruby ecosystem▶ Ruby specialties▶ How to get started?
  • Facts▶ First “Hello World” in 1995 (PHP 1995 too)▶ Opensource (PHP too)▶ Inspired by: Perl, Smalltalk, Lisp, Python …▶ Philosophy: Designed for programmer productivity and fun.
  • Creator"I wanted a scripting language that wasmore powerful than Perl, and more object-oriented than Python. Thats why I decidedto design my own language.” Yukihiro (Matz) Matsumoto
  • Why Ruby?▶ It’s fun!▶ It’s going to make your better.▶ And definitely it will sabotage what you believe in.
  • Similarities▶ Ruby has exception handling▶ Garbage collector▶ The is fairly large standard library▶ The are classes and access modifiers
  • Ruby is Dynamic▶ No need to declare variablesvar = “World in hell”var.class #Stringvar = 1var.class #Fixnum
  • Ruby is Strong Typed▶ Like in Java or C# there is no type juggling. You need to convert between types.a = “1”b=2a + b #TypeError: cant convert Fixnum into Stringa.to_i + b # 3
  • Everything is an Object▶ Inspired by SmallTalk▶ Unlike other programming languages that states the same, Ruby really is.
  • Everything is an Object▶ Primitive Types are an objects10.times {puts “I am sexy and I know it!”}#Output “I am sexy and I know it!”#Output “I am sexy and I know it!”#Output “I am sexy and I know it!”#Output “I am sexy and I know it!”#Output “I am sexy and I know it!”#....(10 times)…
  • Everything is an Object▶ Control structures are object methods class Fixnum < Integer def – numeric # subtracting code end end
  • Ruby is Flexible▶ Existing ruby code could be easily altered. class Numeric def toSquare self * self end end 2.toSquare# 4
  • Duck typing▶ Definition: When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. (Wikipedia)
  • Duck typingWhat makes object an object? Answer is a: Behavior
  • So, is it a duck?Swim? YesCan Quack? YesIs it a duck?Definitely!
  • And this?Swim? YesCan Quack? Yes. Kind ofstrange, but still itmake quack like soundIs it a duck?Looks like!
  • How, about this?Swim? Badly, but yes.Can Quack? Yeah, makePlenty of sounds but, canquack also.Is it a duck?Sort of weird duck, but yes!
  • Or, probably this?Swim? YepCan quack? Canmake weird quacksounds.Is it duck?Trying very hard, soyes 
  • Duck Typing▶ So, everything that could respond to several criterias that makes us believe that it’s a duck, is a duck.
  • Duck Typing in context of Ruby▶ There is no abstract classes and interfaces.▶ There is Modules and Mixins.
  • Modules and Mixins▶ Modules define reusable pieces of code that couldn’t be instantiated.▶ Modules provides a namespace and prevent name clashes▶ Modules could be “mixin” to any class that satisfy conventions described in documentation (Should quack and swim like a duck).▶ In PHP 5.4 Traits is an equivalent to Mixins
  • How we usually do this in PHPInterface ILog{ function write($message)}EventLog implements ILog{ function write($message) { //useful code }}
  • How we do this in Rubymodule Log def write #code endEndclass EventLog include Log def Prepare endend
  • Implementing Enumerable▶ From Enumerable module documentation: The Enumerable mixin provides collection classes with several traversal and searching methods, and with the ability to sort. The class must provide a method “each”, which yields successive members of the collection.
  • Implementing Enumerableclass MyCollection include Enumerable def each #yields result endend
  • About coding guide lines▶ Remember the times of Hungarian notation? $f_amount = 100.00; $s_string = “I am definitely a string”;▶ How many coding guide lines there? ▶ PEAR, ▶ Zend, ▶ Wordpress ▶ Your company standard
  • You. When you get someones code with different coding guide lines.
  • Ruby Coding guide linesRuby syntaxes mostly dictates codingguidelines: ▶ localVariable ▶ @instanceVariable ▶ @@classVariable ▶ $globalVariable ▶ Constant ▶ ClassName ▶ method_name
  • Ruby metaprogramming▶ DRY – Don’t repeat yourself.▶ But that’s another story 
  • FrameworksRuby PHP▶ Ruby on ▶ Symfony, Yii, Zend Rails, Merb …▶ Sinatra ▶ Sylex▶ Radiant, Mephisto ▶ WordPress, Drupal , Joomla
  • ToolsRuby PHP▶ Ruby Gems ▶ PEAR, Composer▶ Bundler ▶ Bash, Composer▶ TestUnit, minitest ▶ PHPUnit▶ Cucumber, Rspec, ▶ Behat Shoulda
  • Testing Rocks!
  • Feel like a Rubier now?
  • Ruby tutorial 101Interactive ruby tutorial:▶ course:▶▶
  • Books▶ Programming Ruby (Pick Axe book)By Thomas D., Fowler C., Hunt A.▶ Design Patterns In RubyBy Russ Olsen▶ Search Google for: Learn Ruby
  • Follow the ruby side we have cookies 
  • Questions? Ruby for PHP developers By Max TitovGet examples: www.maxtitov.meGet in touch: Twitter: eolexe