【 PHP 】PHP8に入門してみた 215日目 PHPの基本 ( オブジェクト指向 マジックメソッド その2)
PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。
オブジェクト指向
マジック! その2
__isset
と__unset
の例です。
MyClassというクラスを定義し、__set()、__get()、__isset()、__unset()メソッドを定義しています。
__isset()メソッドは、isset()関数が呼び出されたときに自動的に呼び出されるメソッドで、オブジェクトのプロパティが定義されているかどうかを返します。
__unset()メソッドは、unset()関数が呼び出されたときに自動的に呼び出されるメソッドで、オブジェクトのプロパティを削除します。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>こんにちは!</title>
<!-- Bootstrapを有効化 -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" />
</head>
<body>
<?php
class MyClass
{
private $data = array();
public function __set($name, $value)
{
$this->data[$name] = $value;
}
public function __get($name)
{
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
} else {
return null;
}
}
public function __isset($name)
{
return array_key_exists($name, $this->data);
}
public function __unset($name)
{
unset($this->data[$name]);
}
}
$obj = new MyClass();
$obj->name = "John"; // __set()メソッドが呼び出される
echo isset($obj->name); // __isset()メソッドが呼び出される
unset($obj->name); // __unset()メソッドが呼び出される
echo isset($obj->name); // __isset()メソッドが呼び出される
?>
</body>
</html>
最後に、$objというオブジェクトを生成し、$obj->nameというプロパティに値を設定し、isset()関数で存在を確認しています。その後、unset()関数でプロパティを削除し、再度isset()関数で存在を確認しています。この場合、isset()関数によって、__isset()メソッドと__unset()メソッドがそれぞれ呼び出されます。
メモ
トリガーみたいなうごきですね。
ディスカッション
コメント一覧
まだ、コメントがありません