Edited at

PHP Ruby 地味に違うところ諸々

More than 3 years have passed since last update.


はじめに

自分はぺちぱーで、今まで業務で触ったのはphpだけでした。

自分の扱える言語を増やすため、Rubyをやることにしました。

当然ですがPHPと違うところがいろいろあって面白かったです。

特に自分的に、「あ、ここ地味だけど、違うな〜」と思うことを、初歩的なところなんですが、書いておこうと思います。


バージョン


Ruby

[vagrant@localhost ~]$ ruby -v

ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]


PHP

[vagrant@localhost ~]$ php -v

PHP 7.0.3 (cli) (built: Feb 3 2016 11:40:05) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies


インクリメントのやり方違う


php


test.php

$i = 1;

$i++;
echo $i;
// => 2

$i--;
echo $i;
// => 1



ruby


test.rb

i = 1

i += 1
puts i
# => 2

i -= 1
puts i
# => 1



コメントの書き方違う


php


一行コメント


test.php

// $test = "ベッキー";

# $test = "ゲス";


複数行コメント


test.php

/**

$test1 = "ベッキー";
$test2 = "ゲス";

echo $test1 . ":" . $test2;

*/



ruby


一行コメント


test.rb

# test = "ベッキー"



複数行コメント


test.rb

=begin

test = "ベッキー"

=end



elseif文の書き方違う


php


test.php

if ($number === 1)

{
echo "背番号は1番です。";
}
elseif ($number >= 2)
{
echo "背番号は2番以上の数字です。";
}
else
{
echo "貴方の背番号はありません。";
}


ruby


test.rb

if number == 1

puts "背番号は1番です。"
elsif number >= 2
puts "背番号は2番以上の数字です。"
else
puts "貴方の背番号はありません。"
end


変数の結合のやり方違う 文字列の結合のやり方違う


php


test.php

$prefix = "俺のこの手が";

$suffix = "光って唸る";
echo $prefix . $suffix;
// => 俺のこの手が光って唸る

$prefix = "バック・トゥ・ザ・フューチャー";
$suffix = 2;
echo $prefix . $suffix;
// => バック・トゥ・ザ・フューチャー2



ruby


test.rb

prefix = "俺のこの手が"

suffix = "光って唸る"
puts prefix + suffix
# => 俺のこの手が光って唸る

prefix = "バック・トゥ・ザ・フューチャー"
suffix = 2
puts prefix + suffix.to_s
# => バック・トゥ・ザ・フューチャー2



ループのスキップの仕方が違う


php


test.php

$i = 0;

while($i < 10)
{
$i++;

if ($i == 5)
{
continue;
}

echo "ループ" . $i . "回目\n";
}



ruby


test.rb

i = 0

while i < 10
i += 1

if i == 5
next
end

puts "ループ#{i}回目"
end



インスタンス作る方法違う


php


test.php

class User

{
private $name = null;

public function __construct($name)
{
$this->name = $name;
}

public function printName()
{
echo $this->name;
}
}

$user = new User("ゲス男");
$user->printName();
# => ゲス男



ruby


test.rb

class User

def initialize(name)
@name = name
end

def printName
puts @name
end
end

user = User.new("ゲス男")
user. printName()



ゲッター / セッターの作り方違う


php


test.php

class User

{
private $name = null;
private $age = null;

public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}

public function getAge()
{
return $this->age;
}

public function setAge($age)
{
$this->age = $age;
}
}

$user = new User("ゲス男", 20);
echo $user->getAge();
// => 20
$user->setAge(25);
echo $user->getAge();
// => 25



ruby


test.rb

class User

def initialize(name, age)
@name = name
@age = age
end

attr_accessor :age
end

user = User.new("ゲス男", 20)
puts user.age
# => 20
user.age = 25
puts user.age
# => 25