プロパティのセットを含むクラスを作成しようとしています。次のように使用されます。
$class = new test_class();
$class->property;
$class->second_property;
基本的に、プロパティが存在する場合は true、存在しない場合は false です。プロパティには値がなく、存在のみがあります。
今、私はこのようなことをしたい:
$class = new test_class();
var_dump($class->property); // false - property does not exist
var_dump($class->second_property); // true - second_property exists
var_dump( (bool) $class); // true
したがって、テスト クラスのプロパティが 1 つでも存在する場合$class
、オブジェクトであるため、var ダンプは true を表示します。
ただし、クラスにプロパティがない状況では、これを実現したいと考えています。
$class = new test_class();
var_dump($class->property); // false - property does not exist
var_dump($class->second_property); // false - second_property does not exist
var_dump( (bool) $class); // false
しかし、私はまだなりたいのです$class
が、ロジックテストで false を返します。instanceof
test_class
これはまったく可能ですか?もしそうなら、どうすればいいですか?
ありがとう、オジー
編集:
明確にするために、私はすでに __get() マジック関数を使用しています。私がしたいのtest_class
は、 にプロパティがない場合、 avar_dump
が実行されると false を返しますが、instanceof
は を返しtest_class
ます。
精査中...
複雑な権限システムを作成しています。ユーザーにはセクションが割り当てられ、各セクションには一連の権限があります。
次のように機能します。
$user = permissions::get_user(USER_ID_HERE);
// Every property of the $user is a section
var_dump($user->this_section_exists); // true - returns an object
var_dump($user->this_section_doesnt); // false - returns a boolean
セクションが存在する場合、セクション権限のオブジェクトを返します。
var_dump($user->this_section_exists); // true
var_dump($user->this_section_exists->this_permission_exists); // true
var_dump($user->this_section_exists->this_permission_doesnt); // false
エッジケースは次のとおりです。
var_dump($user->this_section_doesnt); // false
var_dump($user->this_section_doesnt->some_permission);
// This should also return false, which it does,
// But it throws a notice: "Trying to get property of non-object"
クラスを呼び出すコードを変更せずにその通知を抑制できるようにしたい、つまり @ を抑制しない.. または、ロジックテストで false と評価されるプロパティのないオブジェクトを返すことができるようにしたい.