PHP勉強しなおして変だなーと感じた違和感MEMO

Submitted by UltraBirdTech on Sun, 12/03/2017 - 08:35

どーも、ばぁどです。

最近、PHPの勉強を始めました。

 

普段はRubyやらJavascriptを書いているので、PHPの文法、お決まり、仕様に違和感アリアリです。

書いていけば慣れるんだろうけど、その違和感は言語を学ぶ上での大事なポイントだと思うので、MEMOとして書き残しておこうと思います。

・セミコロンが必要

これは自分の中では殿堂入りの驚きポイント。

PHPの基本構文なのに未だになれない(汗)

普段、セミコロンがいらないスクリプト言語しか触ってないから仕方ない。

言語仕様です。諦めましょう。

 

・変数宣言には$を使う

$をつけることで、変数となる。

うーん。変数なんて一番よく使うのに$があちこちにあるってソースコード見にくいなぁ・・・

言語仕様です。諦めましょう。

 

・定数、関数名は大文字、小文字区別しない

マジか!!

print 'Hello World'

Print 'Hello World'

PRINT 'Hello World'

PrInT 'Hello World'

でも動作する。

https://github.com/UltraBirdTech/php_samples/blob/master/first_learning/01_const.php

 

ちなみにnullもキーワードなので、大文字、小文字区別しないそう。

$a = null

$b = Null

$c = nulL

$e = NuLl

全部Nullになる。

https://github.com/UltraBirdTech/php_samples/blob/master/first_learning/02_null.php

個人的には大文字、小文字区別して欲しいところ。

ソースコード検索とかをするとき、完全一致で検索できないのは不便だなー。

言語仕様です。諦めましょう。

Arrayintcast したらint1になる。

???????????????????????????????????????????????????????????????????

エラーにしてよ。

言語仕様です。諦めましょう。

https://github.com/UltraBirdTech/php_samples/blob/master/first_learning/03_cast_array_to_int.php

iffalse判定

false値、nullがfalseとして判断されるのはわかる。

0と0.0と’0’はfalseとして判定される。

言語仕様ですが、これはまだ分かる範囲。

きっと0をfalseとして扱いたかったんですね。

確かに言語を作るとして、0をfalseにするか、trueにするかは悩むところ。

https://github.com/UltraBirdTech/php_samples/blob/master/first_learning/04_false.php

 

arrayprintしたらArrayが出力される

これはもう完璧にRuby脳。

var_dump()というのを忘れていました。はい。。。

https://github.com/UltraBirdTech/php_samples/blob/master/first_learning/05_print_array.php

$this

$thisよお前は一体誰なんだ。

Rubyにおけるselfのようなものですかね。

擬似変数という、これまた読むのに邪魔だなーと思う。

そのうち慣れるものだろうか。

言語仕様です。諦めましょう。

 

・「.」は文字列連結

メソッドを呼び出してほしい。

言語仕様です。諦めましょう。

 

・メソッド呼び出しは->を使う

ラムダにして欲しい。

メソッド呼び出しで、アロー演算子なれないです。

言語仕様です。諦めましょう。

 

まとめ

なんか、もう僕はPHPを使ってはいけないのではないかと思ってきた。。。

PHPとはお仕事上のお付き合いだけにとどめたいところですな。

自分の中で基礎言語がRuby系になっているので、Ruby likeな書き方ではない言語に違和感を持ってしまうという面はあると思います。(Ruby以降もswiftやらcoffeescriptやらRuby likeなものに触れる機会が多かったので・・・)

 

仕様について考えるべきは、なぜこういう仕様にしたのか?というところですかね。

今回のこの違和感は大事にして、PHPを勉強していく上でのポイントにしていこうと思います。

PHPの大元のソースコードとか見れば分かる気がする。

 

Tags