:: は「スコープ解決演算子」と呼ばれます。PHPでは、静的メソッドや静的プロパティをクラス名やselfを使ってアクセスする際に使用します。
PHPでは、クラスという仕組みを使って、データや機能をまとめることができます。クラスの中には、**メソッド**(関数のようなもの)や**プロパティ**(変数のようなもの)があります。
静的(スタティック)メソッドやプロパティとは、クラス自体に属するもので、クラスのインスタンス(オブジェクト)を作らなくても使えるものです。これを使うためには、`::`という記号を使います。
### 具体例で説明します
#### 1. クラスの中にある静的メソッドを使う場合
まず、クラスを定義します。このクラスには、静的なメソッド`get_slide_html`があります。
```php
class SlideShow {
// 静的メソッドを定義
public static function get_slide_html() {
return '<div>Slide Content</div>';
}
}
```
このクラスの中で`self::get_slide_html()`と書くと、このクラスの静的メソッド`get_slide_html`を呼び出すことができます。
```php
class SlideShow {
public static function get_slide_html() {
return '<div>Slide Content</div>';
}
public function displaySlide() {
echo self::get_slide_html();
}
}
```
ここでの`self::get_slide_html()`は、`SlideShow`クラスの中で`get_slide_html`メソッドを使うという意味です。
#### 2. クラスの外から静的メソッドを使う場合
クラスの外で静的メソッドを使うときは、`クラス名::メソッド名`と書きます。
```php
// 静的メソッドの呼び出し
echo SlideShow::get_slide_html();
```
この例では、`SlideShow`クラスの静的メソッド`get_slide_html`を呼び出して、その結果を表示しています。
### まとめ
- `self::` は、同じクラス内の静的メソッドやプロパティを使うために使います。
- クラスの外から静的メソッドやプロパティを使うときは、`クラス名::メソッド名` もしくは `クラス名::プロパティ名` と書きます。
静的メソッドやプロパティを使うと、クラスをインスタンス化(newでオブジェクトを作ること)しなくてもクラスの機能を利用できるので、便利です。