執筆のきっかけ
これまでのエンジニア歴でほぼJavaしか経験してきませんでしたが、
ついにPHP (Laravel) という別言語を使用している業務に入ることになりました。
実際の業務が開始される前に、少しでもソースコードを理解しようとサンプルコードを探っていましたが、
PHPの特徴や根幹というより、そもそも文法や書き方からわからないレベルがスタート地点のため、
まずは超基本の文法をおさえるために整理しようと決意しました![]()
前提
この記事は以下の方を対象とした内容です![]()
- Java経験者 かつ PHP (Laravel)初心者
① 変数はすべて $ から始まる
PHPでは、変数に必ず $ を付けます。
$name = "Taro";
$age = 20;
Javaと同じ感覚でいきなり変数名を書こうとしてしまいがちですが、
$をつける癖を付けましょう!
name = "Taro"; // NG
② 型を書かない
Javaでは型が必須ですが、PHPでは基本書きません。
$name = "Taro";
$age = 20;
ただし、メソッドの引数などには明示的に指定して書くこともできます。
型を定義できるのであればわかりやすいと感じました。
function hello(string $name): string {
return "Hello " . $name;
}
③ 文字列連結
文字列を連結する際は .(ドット)を使用します。
$msg = "Hello " . $name;
Javaのように + で書きたくなりますが、
PHPにおいては + を使用すると文字列を数値に変換しようとする動きになり、結果的にエラーになってしまいます。
$msg = "Hello " + $name; // NG
④ オブジェクトアクセス
オブジェクトにアクセスする際は -> と書きます。
ラムダみたいな書き方ですね。
PHP:
$user->name;
Java:
user.getName();
⑤ 配列
PHPでは配列が便利ということを知りました。
Javaでは配列よりListをよく使用していたので、
配列についてもしっかりおさらいして使えるようにします。
Java
String[] arr = {"a", "b", "c"};
PHP
$arr = ["a", "b", "c"];
アクセス方法![]()
echo $arr[0]; // a
連想配列
$user = [
"name" => "Taro",
"age" => 20
];
アクセス方法![]()
echo $user["name"]; // Taro
⑥ if文
if文の書き方はJavaとPHPで変わらなそうなため安心しました。
Java
if (num > 10) {
System.out.println("big");
}
PHP
if ($num > 10) {
echo "big";
}
ただし比較演算子に特徴があり、厳密に比較するかどうかで書き方が変わることを覚える必要があります。
"10" == 10 // true
"10" === 10 // false
⑦ ループ
通常のループは同じ書き方で良さそうです。
Java
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
PHP
for ($i = 0; $i < 3; $i++) {
echo $i;
}
拡張for文 (foreach) の書き方は少し異なります。
Javaの for (Type item : list) という書き方に慣れていると、PHPの書き順は逆に見えます。
Java: for (User user : users) { ... }
PHP: foreach ($users as $user) { ... }
Java :
for (String s : list) {
System.out.println(s);
}
PHP :
foreach ($arr as $value) {
echo $value;
}
⑧ 関数
関数の書き方としては以下のポイントをおさえる必要があります。
-
functionを書くのを忘れない -
$this->を省略しない - インスタンスは
->、スタティックは:: - Javaでは戻り値の型を先に書き、PHPでは戻り値の型を後に書く
Java
public class UserService {
private String prefix = "Mr. ";
public String formatName(String name) {
return this.prefix + name;
}
}
PHP
class UserService {
private string $prefix = "Mr. ";
public function formatName(string $name): string {
return $this->prefix . $name;
}
}
⑨ Laravel:DB取得
LaravelではDBアクセスをシンプルに書くことができます。
以下よりDB操作に関する違いを確認していきます。
Java :
User user = userRepository.findById(1).orElse(null);
Laravel :
$user = User::find(1);
⑩ Laravel:DB検索
User user = userRepository.findByEmail("test@test.com");
$user = User::where('email', 'test@test.com')->first();
⑪ Laravel:DB登録
userRepository.create(user);
User::create([ 'name' => 'Taro' ]);
⑫ Laravel:DB更新
user.setName("Mike");
userRepository.update(user);
User::where('id', 1)->update([ 'name' => 'Jiro' ]);
まとめ
Javaと比較してPHPは、
「自由度が高く、そこまで厳格な言語ではない」
という印象を受けました。
とはいえ、コーディング時に気を付けないと予期せぬ動きやエラーを誘発してしまいそうなので、
最初はJavaとの違いを意識しつつ慎重に実装しようと思いました。
とりあえず「Laravelのコードを読める&書ける」ようになれたらと思い書き連ねていたらとりとめのない記事になってしまいましたが、備忘録としてアウトプットできただけでも記憶に定着する助けになりました。
同じ境遇の方への参考になったら幸いです。がんばりましょう![]()