php コールバック関数を使いたい(クラス内で自身のメソッドとか)

クラスの中と外で呼び出す時が微妙に記載が異なる

作成日:2021-11-06, 更新日:2021-11-06

基本

function cb() {
	// コールバックで呼ばれたときにやりたい処理
}
$xxx = preg_replace_callback(〇〇〇, 'cb', xxx);

クラス内のメソッドをコールバック関数に指定

class clsCB {
	public function cb() {
		// コールバックで呼ばれたときにやりたい処理
	}
}
$xxx = preg_replace_callback(〇〇〇, 'clsCB::cb', xxx);

※インスタンスを作らなくてもいけるっぽい

staticのとき

staticのときも同じ。

class clsCB {
	public static function cb() {
		// コールバックで呼ばれたときにやりたい処理
	}
}
$xxx = preg_replace_callback(〇〇〇, 'clsCB::cb', xxx);

クラス内でコールバック関数を呼び出したい

class clsCB {
	public function cb() {
		// コールバックで呼ばれたときにやりたい処理
	}

	public function run() {
		$xxx = preg_replace_callback(〇〇〇, array($this, 'cb'), xxx); // 配列で指定
	}
}
$clsCB = new clsCB();
$clsCB->run();

staticのとき

class clsCB {
	public static function cb() {
		// コールバックで呼ばれたときにやりたい処理
	}

	public static function run() {
		$xxx = preg_replace_callback(〇〇〇, 'self::cb', xxx);
	}
}
\clsCB::run();