いつもお世話になっております。
前提・実現したいこと
親クラスで定義した定数(連想配列)を子クラスで定義した定数(連想配列)で一部上書きする関数を親クラスに作成したいと考えています。
親クラスで定義された関数を子クラスのインスタンスから呼び出すと、 self::定数名
で取得した値が親クラスで定義した定数の値になります。
子クラスの定数をうまく取得する方法はないでしょうか?
現状動作しているのですが、もっと良い方法があればご教示いただきたいです。
環境・バージョン
OS: CentOS 7.6
言語: PHP 5.6
ソースコード
ParentClass
php
1<?php 2 3class ParentClass 4{ 5 const BASE_LIST = [ 6 "KeyA" => "hogehoge", 7 "KeyB" => "hugahuga", 8 "KeyC" => "hungaaaa", 9 ]; 10 const OVERRIDE_LIST = []; 11 12 public function get_list() 13 { 14 $class = str_replace('/', '\',get_class($this)); 15 $base = eval('return '.$class."::BASE_LIST;"); 16 $list = eval('return '.$class."::OVERRIDE_LIST;"); 17 return array_merge($base, $list); 18 } 19}
ChildClass
php
1<?php 2 3use ParentClass; 4 5class ChildClass extends ParentClass 6{ 7 const OVERRIDE_LIST = [ 8 "KeyA" => "piyopiyo", 9 "KeyB" => "puyopuyo", 10 ]; 11}
期待する結果
>>> $child = new ChildClass(); >>> $child->get_list(); => [ "KeyA" => "piyopiyo", "KeyB" => "puyopuyo", "KeyC" => "hungaaaa", ]
以上、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/02 01:25
2021/07/02 01:37
2021/07/02 02:38