Help us understand the problem. What is going on with this article?

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
kojirock5260
底辺のエンジニアです。 底の底でもがいています。
http://kojirooooocks.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした