定義済みのインターフェイスとクラス目次
SPL インターフェイス および 定義済のクラス も参照ください。 Traversable インターフェイスはじめにそのクラスの中身が foreach を使用してたどれるかどうかを検出するインターフェイスです。 これは抽象インターフェイスであり、単体で実装することはできません。 IteratorAggregate あるいは Iterator を実装しなければなりません。 インターフェイス概要
Traversable
このインターフェイスにはメソッドがありません。 traverse 可能なすべてのクラス用の基底インターフェイスとしてのみ存在しています。 変更履歴
注意
Iterator インターフェイスはじめに外部のイテレータあるいはオブジェクト自身から反復処理を行うためのインターフェイスです。 インターフェイス概要
Iterator
extends
Traversable
/* メソッド */
public mixed Iterator::current()
public mixed Iterator::key()
public void Iterator::next()
public void Iterator::rewind()
public bool Iterator::valid()
定義済みのイテレータPHP には多くのイテレータがあらかじめ用意されており、日々の作業に使えます。その一覧は SPL イテレータ を参照ください。 例例1 基本的な使用法 この例は、イテレータで foreach を使ったときに、どんな順番でメソッドが呼ばれるかを示すものです。
<?php 上の例の出力は、 たとえば以下のようになります。 string(18) "myIterator::rewind" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(0) string(12) "firstelement" string(16) "myIterator::next" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(1) string(13) "secondelement" string(16) "myIterator::next" string(17) "myIterator::valid" string(19) "myIterator::current" string(15) "myIterator::key" int(2) string(11) "lastelement" string(16) "myIterator::next" string(17) "myIterator::valid" 参考オブジェクトの反復処理も参照ください。 IteratorAggregate インターフェイスはじめに外部イテレータを作成するためのインターフェイスです。 インターフェイス概要
IteratorAggregate
extends
Traversable
/* メソッド */
public Traversable IteratorAggregate::getIterator()
例1 基本的な例
<?php 上の例の出力は、 たとえば以下のようになります。 string(9) "property1" string(19) "Public property one" string(9) "property2" string(19) "Public property two" string(9) "property3" string(21) "Public property three" string(9) "property4" string(13) "last property" InternalIterator クラスはじめに内部クラス が、 IteratorAggregate を実装しやすくするためのクラスです。 クラス概要
final
InternalIterator
implements
Iterator
/* メソッド */
private __construct()
public mixed current()
public mixed key()
public void next()
public void rewind()
public bool valid()
Throwableはじめに
Throwable
は、
インターフェイス概要
Throwable
extends
Stringable
/* メソッド */
public string Throwable::getMessage()
public int Throwable::getCode()
public string Throwable::getFile()
public int Throwable::getLine()
public array Throwable::getTrace()
public string Throwable::getTraceAsString()
public Throwablenull Throwable::getPrevious()
public string Throwable::__toString()
/* 継承したメソッド */
public string Stringable::__toString()
変更履歴
ArrayAccess インターフェイスはじめに配列としてオブジェクトにアクセスするための機能のインターフェイスです。 インターフェイス概要
ArrayAccess
/* メソッド */
public bool ArrayAccess::offsetExists(mixed
$offset )public mixed ArrayAccess::offsetGet(mixed
$offset )public void ArrayAccess::offsetSet(mixed
$offset , mixed $value )public void ArrayAccess::offsetUnset(mixed
$offset )例1 基本的な使用法
<?php 上の例の出力は、 たとえば以下のようになります。 bool(true) int(2) bool(false) string(7) "A value" obj Object ( [container:obj:private] => Array ( [one] => 1 [three] => 3 [two] => A value [0] => Append 1 [1] => Append 2 [2] => Append 3 ) ) Serializable インターフェイスはじめに独自のシリアライズ用のインターフェイスです。 このインターフェイスを実装したクラスは __sleep() や __wakeup() をサポートしなくなります。 シリアライズが必要な場合には、自動的に serialize メソッドがコールされます。 このメソッドは __destruct() を実行しません。また、 メソッド内で明示的に書かない限りは一切の副作用を及ぼしません。 アンシリアライズされるときにはそのクラスが自動的に検知し、__construct() メソッドのかわりに適切な unserialize() メソッドがコールされます。 標準のコンストラクタを実行させたい場合は、unserialize() メソッドの中でそれをコールします。 警告
PHP 8.1.0 以降は、 __serialize() と __unserialize() がない状態で Serializable を実装したクラスに対しては、推奨されない警告が発生します。 インターフェイス概要
Serializable
/* メソッド */
public stringnull Serializable::serialize()
public void Serializable::unserialize(string
$data )例1 基本的な使用法
<?php 上の例の出力は、 たとえば以下のようになります。 string(38) "C:3:"obj":23:{s:15:"My private data";}" string(15) "My private data" Closure クラスはじめに無名関数 を表すために使うクラスです。 無名関数は、Closure 型のオブジェクトを生成します。 このクラスにはメソッドが用意され、 生成した無名関数をさらにコントロールできるようになっています。
ここであげたメソッド以外にも、このクラスには
クラス概要
final
Closure
/* メソッド */
private __construct()
public static Closurenull bind(Closure
$closure , objectnull $newThis , objectstringnull $newScope = "static")public Closurenull bindTo(objectnull
$newThis , objectstringnull $newScope = "static")public mixed call(object
$newThis , mixed ...$args )public static Closure fromCallable(callable
$callback )stdClass クラスはじめに動的なプロパティが使える、汎用的な空のクラスです。 このクラスのインスタンスは、 new 演算子や、 オブジェクトへの型変換 によって作成できます。 PHP の関数によっては、このクラスのインスタンスを返すものがあります。 たとえば json_decode, mysqli_fetch_object, PDOStatement::fetchObject が挙げられます。
マジックメソッド
__get()/__set()
を実装しているかどうかに関わらず、
このクラスでは動的なプロパティが許可されています。
よって、 PHP には全てのクラスの親となる基底クラスの概念がないため、 このクラスは基底クラスではありません。 ただ、stdClass を継承させることで、 動的なプロパティの機能を持ったカスタムクラスを結果的に作ることはできます。 クラス概要
stdClass
このクラスは、メソッドやデフォルトのプロパティを持っていません。 例例1 オブジェクトへの型変換を使い、stdClass を作る
<?php 上の例の出力は以下となります。 object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" } 例2 json_decode によって、stdClass を作る
<?php 上の例の出力は以下となります。 object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" } 例3 動的にプロパティを宣言する
<?php 上の例の出力は以下となります。 object(stdClass)#1 (2) { ["foo"]=> int(42) ["1"]=> int(42) } Generator クラスクラス概要
final
Generator
implements
Iterator
/* メソッド */
public mixed current()
public mixed getReturn()
public mixed key()
public void next()
public void rewind()
public mixed send(mixed
$value )public mixed throw(Throwable
$exception )public bool valid()
public void __wakeup()
参考オブジェクトの反復処理 も参照ください。 Fiber クラスはじめにファイバー(Fiber) は 完全なスタックを持つ、停止可能な関数です。 ファイバー はコールスタック中のどこからでも停止することができますし、 後に再開されるまで実行を停止したままにできます。 クラス概要
final
Fiber
/* メソッド */
public __construct(callable
$callback )public mixed start(mixed
...$args )public mixed resume(mixed
$value = null )public mixed throw(Throwable
$exception )public mixed getReturn()
public bool isStarted()
public bool isSuspended()
public bool isRunning()
public bool isTerminated()
public static mixed suspend(mixed
$value = null )public static Fibernull getCurrent()
参考WeakReference クラスはじめに弱い参照により、オブジェクトが破棄されるのを妨げないオブジェクトへの参照を保持することが可能です。 この機能は、キャッシュのようなデータ構造を実装するのに役立ちます。 WeakReference クラスはシリアライズできません。 クラス概要
final
WeakReference
/* メソッド */
public __construct()
public static WeakReference create(object
$object )public objectnull get()
WeakReference の例
例1 基本的な WeakReference クラスの使い方
<?php 上の例の出力は、 たとえば以下のようになります。 object(stdClass)#1 (0) { } NULL WeakMap クラスはじめにWeakMap は、 オブジェクトをキーとして受け入れるマップ(辞書)です。 SplObjectStorage と似ていますが、 WeakMap のキーとなるオブジェクトは、 オブジェクトのリファレンスカウントが更新されません。 つまり、WeakMap のキーとなっているオブジェクトだけが唯一の残された参照だった場合、 オブジェクトはガベージコレクションの対象となり WeakMap から削除されます。 WeakMap の用途は、 長く生き残る必要がないオブジェクトから派生した、 データのキャッシュを作ることです。 WeakMap は ArrayAccess, Iterator, Countable を実装しています。 よって、ほとんどのケースで、 連想配列と同じやり方で操作できます。 クラス概要
final
WeakMap
implements
ArrayAccess
Countable
IteratorAggregate
/* メソッド */
public int count()
public Iterator getIterator()
public bool offsetExists(object
$object )public mixed offsetGet(object
$object )public void offsetSet(object
$object , mixed $value )public void offsetUnset(object
$object )例
例1 Weakmap の使い方の例
<?php 上の例の出力は以下となります。 int(1) Unsetting... Dead! Done int(0) Stringable インターフェイスはじめにStringable インターフェイスは、 特定のクラスが __toString() メソッドを実装していることを示します。 ほとんどのインターフェイスと異なり、 Stringable は、マジックメソッド __toString() が定義されているあらゆるクラスで 暗黙のうちに存在すると見なされますが、 明示的に宣言することもできますし、宣言すべきです。
このインターフェイスの一番の存在意義は、
文字列プリミティブや、
文字列にキャストできるオブジェクトを受け入れる
union型 インターフェイス概要
Stringable
/* メソッド */
public string Stringable::__toString()
Stringable インターフェイスの例
例1 基本的な Stringable インターフェイスの使い方
<?php 上の例の出力は、 たとえば以下のようになります。 123.234.42.9 UnitEnum インターフェイスはじめにUnitEnum インターフェイスは、 全ての列挙型に対して、PHP のエンジンが自動的に適用するものです。 ユーザー定義のクラスとして実装してはいけません。 列挙型はメソッドのオーバーライドを禁止しています。 デフォルトの実装は PHP のエンジンから提供されるからです。 このインターフェイスは、型チェックのためだけに存在しています。 インターフェイス概要
UnitEnum
/* メソッド */
public static array UnitEnum::cases()
BackedEnum インターフェイスはじめにBackedEnum インターフェイスは、 Backed Enum を定義すると、PHP のエンジンが自動的に適用します。 ユーザー定義のクラスとして実装してはいけません。 列挙型はメソッドのオーバーライドを禁止しています。 デフォルトの実装は PHP のエンジンから提供されるからです。 このインターフェイスは、型チェックのためだけに存在しています。 インターフェイス概要
BackedEnum
extends
UnitEnum
/* メソッド */
public static static BackedEnum::from(intstring
$value )public static staticnull BackedEnum::tryFrom(intstring
$value )/* 継承したメソッド */
public static array UnitEnum::cases()
SensitiveParameterValue クラスはじめにSensitiveParameterValue クラスを使うと、 秘密の値をうっかり公開してしまうことを防ぐために値をラップすることができます。 SensitiveParameter アトリビュートを持つパラメータに渡される値は、 スタックトレース中では SensitiveParameterValue オブジェクトで自動的にラップされます。 クラス概要
final
SensitiveParameterValue
/* プロパティ */
private
readonly
mixed
$value;
/* メソッド */
public __construct(mixed
$value )public array __debugInfo()
public mixed getValue()
プロパティ
|