9cubed
ブログ | Tailwind | Vite | Python | MariaDB | Node.js | Linux | PowerShell | Docker | Git | その他 | 将棋ウォーズ | 歌の練習
< 前の記事

PHP - クラス

次の記事 >

PHP - クラス - コンストラクタ

PHP

PHP - クラス - アクセサー

公開日:2020-12-22
更新日:2020-12-22

1. 概要

プロパティにアクセスするためのアクセサーについてです。
プロパティの取得や設定を行うメソッドのことを、アクセサーと呼びます。
設定するメソッドをセッター(setter)、取得するメソッドをゲッター(getter)と呼びます。
メソッド名は、「set」+ プロパティ名、「get」+ プロパティ名、とすることが多いです。
言語によっては、プロパティにアクセスすると、自動的にアクセサーを使ってくれる場合もありますが、
PHPの場合は、アクセサーがある場合は、プロパティを直接参照せずに、自分でアクセサーを使う必要があります。

また、public なプロパティは、外部から取得や設定が自由に行えますが、
アクセサーを使うと、読み取り専用のプロパティや、設定できる値を制限するプロパティを作成できます。

2. setter による値の制限

次の例では、setValue() で制限をかけることにより、
$value が 0 ~ 100 であることを保証しています。
これにより、$value を使う各メソッドごとに、値の範囲チェックをする必要がなくなります。
class Test {
    private $value = 0;

    public function setValue($value) {
        if ($value > 100) $value = 100;
        if ($value <   0) $value =   0;
        
        $this->value = $value;
    }

    public function getValue() {
        return $this->value;
    }
}

$obj = new Test();
$obj->setValue(10000000);
var_dump( $obj->getValue() );
実行結果
int(100)

3. 読み取り専用プロパティ(read only)

$count の getter のみ用意することで、読み取り専用のプロパティを作成することができます。
また、getter の中で、$count を増加させています。
getter はプロパティの取得が主な処理ですが、このように値を設定したり、他の処理をする場合もあります。
class Counter {
    private $count = 0;
    public function getCount() {
        $this->count = $this->count + 1;
        return $this->count;
    }
}

$obj = new Counter();

var_dump( $obj->getCount() );
var_dump( $obj->getCount() );
var_dump( $obj->getCount() );
実行結果
int(1)
int(2)
int(3)

< 前の記事

PHP - クラス

次の記事 >

PHP - クラス - コンストラクタ

YouTube X

新着一覧

  • テーブル結合(CROSS JOIN、INNER JOIN、LEFT JOIN)MariaDB
  • 楽観ロック・悲観ロックMariaDB
  • カレントリードMariaDB
  • インデックスMariaDB
  • 論理削除(ソフトデリート)MariaDB
  • awk(オーク)の使い方についてLinux
  • NOT NULL 制約と NULL を許容した時の動作MariaDB
  • 外部キー制約MariaDB
  • MySQL と MariaDB の関係MariaDB
  • Docker で PostgreSQL のコンテナの使用Linux

アーカイブ

  • 2026/01
  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08
  • /00

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲