- トップページ
- クラスのPHPチュートリアル
- カプセル化
ステップ30 - カプセル化
やってみよう前のステップでは外部からの意図しない変更を防止するために$nameプロパティのアクセス修飾子をpublicからprivateに変更しました。では$nameプロパティの値を変更するためにはどうすればいいでしょうか?これは直接プロパティ値を変更できない代わりに、専用のメソッドを作成することで解決できます。プロパティ値を変更するメソッドを一般的にセッター、逆にプロパティ値を取得するメソッドをゲッターと呼びます。このようにオブジェクトに対してセッターとゲッターのみでアクセスできるようにすることをカプセル化といいます。また関数内でインスタンス変数にアクセスするには変数名の前に$this->を付けます。$thisは現在のインスタンスを表します。
サンプルコード
//猫クラス
class Cat {
//$nameプロパティのアクセス修飾子をprivateに変更
private $name = "tama";
//$nameプロパティのセッターメソッド
function setName($newName) {
$this->name = $newName;
}
//$nameプロパティのゲッターメソッド
function getName() {
return $this->name;
}
}
//Catクラスのオブジェクト$catを作成
$cat = new Cat();
//セッターメソッドを使用して$catオブジェクトの$nameプロパティの値をkokoに変更
$cat->setName("koko");
//ゲッターメソッドを使用して$catオブジェクトの$nameプロパティの値を取得(kokoが返される)
echo $cat->getName();
PHPバージョン8.2
使い方
PHPのコードをWeb上で実行して実行結果を確認しながら学べる無料のPHPチュートリアルです。
コード欄にサンプルのPHPのコード(<?phpと?>は不要)を記述して、実行ボタンをクリックしてください。
PHPのソースコードをphpコマンドで実行するのと同じような感覚で実行結果が下のテキストエリアに表示されます。
また、関数の自動補完(2文字目を入力した時点で関数候補を表示)やコードエディタの背景色の変更も可能です。
PHPを学びたいけど実行環境がすぐに作れない、外出中で実行環境がない場合などに無料で気軽にPHPが学べるサイトです。
注意
無限ループや処理に時間がかかるコードを実行した場合、約1秒でタイムアウトしその時点の結果を出力します。
なるべく高い負荷のかかるコードの実行はご遠慮ください。