祝福されたハッシュリファレンスに基づくPerlクラスがあります(https://github.com/kylemhall/Koha/blob/master/Koha/Object.pm)
これはコミュニティ ベースのプロジェクトであり、さまざまなスキルを持つ多くの開発者が参加しています。
私が見たのは、私たちのオブジェクトを誤ってハッシュリファレンスとして使用している開発者がいることです。実際のデータは、blessed ハッシュリファレンスではなく、ハッシュリファレンス ( $self->{_result} 内) に格納されている dbic オブジェクトに格納されます。開発者が $object->{id} のようなことを試みると、perl は文句を言わず、期待どおり undef を返すだけです。
私がやりたいことは、A) これが発生したときにスクリプトがエラーで爆発するようにする B) $self->{_result} に格納されている dbic オブジェクトの値を設定/取得するための hashref 構文の使用を許可することです。
私は使用してみました:
use overload '%{}' => \&get_hashref;
しかし、これを行うと、通常のメソッドが呼び出されるたびに get_hashref が呼び出されます! オブジェクト自体がハッシュリファレンスであるため、これはある意味で理にかなっています。これは、bless された hashref をオブジェクトとして扱うための Perl の内部構造と関係があると確信しています。
私が達成しようとしていることは可能ですか?