PHPでのクラス名の取り方

主に3種類あるけれども微妙にに違う。
とくに__CLASS__は挙動に癖あるので注意したい。

<?php
namespace testnamespace;

class base{
    public function __construct(){
        echo __CLASS__.PHP_EOL;
        echo get_class($this).PHP_EOL;
        echo $this::class.PHP_EOL;// PHP8以降のみ
    }
}
class child extends base{}
class child2 extends child{
    public function __construct(){
        echo __CLASS__.PHP_EOL;
        echo get_class($this).PHP_EOL;
        echo $this::class.PHP_EOL;
    }
}

$b = new base();
echo '--------------'.PHP_EOL;
$c = new child();
echo '--------------'.PHP_EOL;
$c2 = new child2();

出力

testnamespace\base
testnamespace\base
testnamespace\base
--------------
testnamespace\base
testnamespace\child
testnamespace\child
--------------
testnamespace\child2
testnamespace\child2
testnamespace\child2
カテゴリー: php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です