PHP中的__class__是指向當前類的引用。當你在一個類的方法中使用__class__時,它會返回當前類的名稱。__class__可以用來創建動態的靜態方法、靜態變量和常量,也可以用來做一些動態的繼承和多態。
舉個例子,假設我們有一個名為Person的類:
class Person { public function sayHello() { echo "Hello, I am a Person!"; } }
如果我們在這個類的方法中使用__class__,代碼會變成這樣:
class Person { public function sayHello() { echo "Hello, I am a " . __class__ . "!"; } }
當我們創建了一個名為Tom的Person實例并調用sayHello()方法時,輸出會是“Hello, I am a Person!”。
$person = new Person(); $person->sayHello(); // 輸出:Hello, I am a Person!
但是,如果我們繼承了Person類并創建了一個新的類,輸出會不同:
class Student extends Person {} $student = new Student(); $student->sayHello(); // 輸出:Hello, I am a Student!
我們可以看到,使用__class__可以幫助我們做一些動態的繼承和多態。
此外,我們還可以使用__class__來創建動態的靜態方法、靜態變量和常量。例如:
class MyClass { public static function __callStatic($method, $arguments) { if($method === 'create') { $className = __class__; return new $className(); } } } class MyObject { public static function sayHello() { echo "Hello, World!"; } } $obj = MyClass::create(); $obj->sayHello(); // 輸出:Hello, World!
在上面的例子中,我們使用__class__來創建一個動態的靜態方法,以便我們可以動態地創建一個MyObject實例。
總而言之,__class__是一個非常有用的PHP魔術常量,它可以幫助我們做一些動態的繼承、多態和靜態方法。使用__class__的時候,我們需要小心不要濫用它,以免影響代碼的性能。