5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPプログラマのためのRuby Tipsと逆引き

Last updated at Posted at 2014-11-18

長年PHPとjavascriptの案件をこなしてた筆者が
ギークな若者たちとRoR環境で開発をするにあたり、
どうせ調べものするなら共有しようという意図と、
Qiitaの使い方の練習で作っている記事です。
(たまにPerlの知識も混ぜます。)

基本

php

文末は;セミコロン

ruby

そんなもんいらない

コメント

php

単一行 //
複数行 /* コメント コメントコメント */

ruby

単一行 # (古いphpでも使えるし、apacheのconfとかシェルスクリプト、Perlでもおなじみ)
複数業

コメント
コメントコメント
=end```
rubyでは複数行コメントでも行の途中までをコメントにする事ができないので気をつける。

変数
===
### php
$var_name

### ruby
var_name
$など要らん


### 文字列連結
#### php

"文字列" . "文字列"


#### ruby

"文字列" + "文字列"

※ただし、暗黙の型変換が効かず、文字列に数値を+するとエラーになる。

変数のスコープなど
---


制御構造
===
### if文
#### php

if(条件){
処理
}else if(条件){
処理
}else{
処理
}

#### ruby

if 条件 then
処理
elsif 条件 then
処理
else
処理
end


### for文(foreach)
#### php

for ($i=0;$i<10;$i++){
処理
}

foreach ($array as $val){
処理
}


#### ruby

for i in 0..9
処理
end

for 変数 in オブジェクト
処理
end




rubyのdo はendで終わるので
シェルスクリプト書き慣れてるとdoneとかやりがち・・

ループ中の一段先送りは
phpはcontinue;でrubyはnextだが continue(2);に相当する物はみあたらない、
ループ中断のbreak;は共通


関数とかサブルーチンとか
===
rubyではphpのように関数やメソッドの戻り値を指定する際のreturnを省略できるため、
明示的に終わりが指定されておらず、他人のコードが若干追いにくい・・
#### php

//引数なし
function 関数名 () {
処理
}

//引数あり
function 関数名 (引数) {
処理
}

//戻り値
function 関数名 (引数) {
return 引数 + 1;
}


### ruby

#引数なし
def 関数名
処理
end

#引数あり
def 関数名(引数)
処理
end

戻り値
def 関数名(引数)
引数 + 1
end



記号の意味
===
rubyはやたらと記号が多くて困る


配列の操作
===
配列の宣言
---
### php
```$array = array($var1,1,"aaa");

ruby

strs = ["aaa","b","hello ruby array"]```

newメソッドを使う場合
```arr = Array.new```
```fives = Array.new(5)``` 要素数5で初期化
```fives = Array.new(5,0)```5つの要素を0で初期化

なじみにくい表現 %w %i (他人のコードで出くわして調べました)
```%w(ruby perl python)
```文字列を空白で区切って配列化する(トーカナイズ)
これは ```$array = explode(" ","ruby perl pythone");```と実行した場合に近い
rubyだと```arr = "ruby perl python".split()```というやりかたも可能でこちらの方がphpプログラマなじみ安いでしょう。
他人に読みやすいコードを書く場合は省略記号をなるべく使わないことをおすすめします。
perlのqw/red blue black/ のような書き方を取り入れたせいかもしれない?

さらにPHPプログラマがファ?ってなる書式
```%i(ruby perl python)
 # => [:ruby :perl :python]
```シンボルの配列を作成する

rubyもphpのように配列の要素に数値と文字列を混ぜたり、オブジェクトを格納したりできます。

要素の取得
---
rubyもphpと同様に
```var = arr[0]```
のように要素を取得できます。

また、rubyではphpのarray_sliceを簡略した書き方で配列の一部を新たな配列として取得できます。
### ruby
```arr2 = arr1[0..2]```
```arr2 = arr1.slice(0..2)```
```arr2 = arr1.slice(0,3)```
### php
```$arr2 = array_slice($arr1,0,3);```

配列操作
---
unshiftやpop,concat,pushなどは存在
phpのunsetはrubyではdelete
配列を結合する際に、 +、+=も使える。


正規表現
===
rubyの正規表現の書式はむしろperlに似ている。



5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?