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

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

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • 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.

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