###【PHP】クラスのメンバ変数へのアクセス方法について
AとB、2つのシステムで共通のDBへ接続しています。
AはWebシステムで、Bはバッチ処理のみ行います。
Aで生成したhogeクラスのインスタンスをシリアル化してDBに登録します。
Bはそれをデコードし、バッチ処理に使用します。
私はいま、Aで一度登録したレコードにあるhogeクラスの
インスタンスの内容を変更して、レコードをupdateする機能を作成しています。
しかし、hogeクラスのメンバ変数がprotectedになっており、なおかつ、
そのクラスにはメンバ変数を操作するためのメソッドを持っていません。
(Aでは登録のみ、Bで細かく操作する使い方のため)
私はこの問題への対応としてhogeクラスに__get/__set
を追加しました。
###質問したい点
その対応方法を先輩エンジニアに見てもらったところ、
下記のような意見をもらいました。
・メンバ変数にアクセスできる方法が増えたため、他の使用箇所でもテストが必要になる
・新しくサブクラスを作り、メンバ変数はそちらで操作すべき
この話を聞いたときはなるほど、と思いましたが、
実際にこれをどのように実現するのかがわかりません。
(残念ながら、そのエンジニアは休職してしまいました)
hogeクラスを継承したサブクラスを作ったとして、一度作られたインスタンスを
サブクラスへキャストし、再度スーパークラスへキャストする方法があるのでしょうか。
それともサブクラスを活用する別の方法で、インスタンスの中身を変更し、
再度スーパークラスとしてDBに登録することができるのでしょうか。
###回避策として
汎用的な__get/__set
を使うのが問題であるならば、アクセスしたいメンバ変数用の
getter/setterを個別に作成すればokではないかと考えております。
この方法の問題点があれば、ご教示ください。
以上です。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。