RubyとPHP(仮) 基本的な違い(1)
2008年04月25日(金)16:54|天方
rubyとphpの基本的な違いについてまとめてみたいと思います。
変数とデータ型(1)
変数名の違い
rubyとphpの変数名の違いについて表にまとめます。変数の場合の大きな違いは、phpの場合は、変数名の先頭に$を付加する点と、rubyでは、英小文字かアンダースコアで始めなければならない点です。
rubyでは、普通の変数は英小文字で始めなければならないという制約を、コーディング規約のレベルではなく、言語のレベルで持っているという点が言語として注目する点でしょう。
| Ruby | PHP | |
|---|---|---|
| 先頭の文字 | 英小文字または アンダースコア | 英文字、、127から255までのアスキー文字 またはアンダースコア※1 |
| 先頭以降の文字 | 英文字・数字・アンダースコア | 英文字・、127から255までのアスキー文字 、数字またはアンダースコア |
| 例 |
width
_nameOfcolor
|
$width
$_nameOfColor
|
※1 phpの変数名の前には$が付加されます。
定数名の違い
rubyでは、定数名の名前は大文字で始まることになります。これにより変数、定数の違いが明確にわかるようになります。 phpでは、defineを使ってグローバル宣言を行う方法と、クラスでオブジェクト定数を宣言する方法が存在します。前者はPHP4から、後者はPHP5から対応しています。defineはグローバルな名前空間を使ってしまい、名前空間が衝突してしまう可能性がります。PHP5から、オブジェクト定数が加えられました。 rubyでの定数は、クラスの中で定義することができ、クラス内で定義されない場合にはObjectクラスの定数となるため、PHP5のオブジェクト定数と近いといえるでしょう。また、rubyの定数は、その中にオブジェクトを入れることもできます。phpでは、オブジェクト定数でのみ、オブジェクトを扱えます。これは、もともとオブジェクト指向で作られた言語と、そうでない言語の違いですが、こういった制約があるのかないのかによって、プログラミングのスピードは大きくかわることもあるのではないでしょうか。
| Ruby | PHP4,5(define) | PHP5(オブジェクト定数) | |
|---|---|---|---|
| 先頭の文字 | 英大文字 | 英文字、127から255までのアスキー文字 または アンダースコア | 英文字、127から255までのアスキー文字 または アンダースコア(使える文字を要確認) |
| 先頭以降の文字 | 英文字・数字・アンダースコア | 英文字、127から255までのアスキー文字、数字 または アンダースコア | 英文字、127から255までのアスキー文字、数字 または アンダースコア(使える文字を要確認) |
| 定数化の制約 | なし | スカラデータ (boolean, integer, double, string) のみ定数化可能 | 定数として指定できるのは、定数表現で記述したリテラル。(PHP5.3以降ではオブジェクトへの参照も可能) |
| 宣言の例 |
INPUT_FILE_PATH = ‘input.csv’
OutputFilePath = ‘output.csv’
|
define(“INPUT_FILE_PATH”, “input.csv”);
define(“OutputFilePath”, “output.csv”);
|
class ExampleClass
{
cosnt INPUT_FILE_PARH = 'input.csv';
}
|
| 参照の例 |
filePath = INPUT_FILE_PATH
|
filePath = INPUT_FILE_PATH;
|
$filePath = ExampleClass::INPUT_FILE_PATH;
|
以上が変数名と定数名の比較となります。いかがでしたでしょうか。 次は、データ型の違いについて比較してみたいと思います。