32
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java経験者がLaravel(PHP)の文法を整理【超基本】

32
Posted at

執筆のきっかけ

これまでのエンジニア歴でほぼJavaしか経験してきませんでしたが、
ついにPHP (Laravel) という別言語を使用している業務に入ることになりました。

実際の業務が開始される前に、少しでもソースコードを理解しようとサンプルコードを探っていましたが、
PHPの特徴や根幹というより、そもそも文法や書き方からわからないレベルがスタート地点のため、
まずは超基本の文法をおさえるために整理しようと決意しました:computer:


前提

この記事は以下の方を対象とした内容です:beginner:

  • 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"];

アクセス方法:arrow_down:

echo $arr[0]; // a

連想配列

$user = [
    "name" => "Taro",
    "age" => 20
];

アクセス方法:arrow_down:

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のコードを読める&書ける」ようになれたらと思い書き連ねていたらとりとめのない記事になってしまいましたが、備忘録としてアウトプットできただけでも記憶に定着する助けになりました。

同じ境遇の方への参考になったら幸いです。がんばりましょう:blush:


32
5
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
32
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?