Laravelだとよく見る Model::classってなんなんでしょう?
リレーションだったり、サービスプロバイダーのあたりでよく見かけますよね。
// user.php
public function posts()
{
return $this->hasMany(Post::class);
}
めちゃくちゃ単純です。
たとえば次のようなUserクラスがあるとします。
namespace App\Model;
class User
{
...
}
それを別のファイルから呼び出していたとします。
namespace App\Controller;
use App\Model\User;
class UserController
{
echo User::class; // App\Model\User
}
ネームスペースを含んだクラス名を文字列として返すだけです。
だから上記は以下とまったく同じです。
namespace App\Controller;
use App\Model\User;
class UserController
{
echo "App\Model\User"
}
知ってしまえば単純ですよね。
これで疑問は解決したでしょうか。
get_classという関数がPHP標準にありますが、こちらはネームスペースは返さずにクラス名だけなのが違いですね
https://www.php.net/manual/ja/function.get-class.php
Laravelなどフレームワークではnamespaceを設定するのが一般的です。
そのためClassName::classという記述が多くなるはずです。