PHPでは、 Property_Exists関数を使用して、オブジェクトに特定のプロパティがあるかどうかを確認します。特にオブジェクトのプロパティが存在するかどうかを動的に確認する必要がある場合、非常に便利なツールです。この関数を使用すると、存在しないプロパティへの直接アクセスを回避でき、潜在的なエラーや例外を回避できます。
Property_exists関数の構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-keyword">object</span></span><span> </span><span><span class="hljs-variable">$object</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$property</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$オブジェクト:プロパティをチェックする必要があるオブジェクトインスタンス。
$プロパティ:チェックするプロパティ名は文字列でなければなりません。
この関数はブール値を返します:
オブジェクトに指定されたプロパティがある場合、 trueを返します。
オブジェクトに指定されたプロパティがない場合、 Falseが返されます。
以下は、 Property_Exists関数の使用を実証する簡単な例です。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Person</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$age</span></span><span>;
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$name</span></span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>) {
</span><span><span class="hljs-variable language_">$this</span></span><span>->name = </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-variable language_">$this</span></span><span>->age = </span><span><span class="hljs-variable">$age</span></span><span>;
}
}
</span><span><span class="hljs-variable">$person</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Person</span></span><span>(</span><span><span class="hljs-string">"John"</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>);
</span><span><span class="hljs-comment">// パブリックプロパティを確認してください 'name' それは存在するしますか</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'name' 存在する。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'name' 存在しませんする。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// 診る私有財産 'age' それは存在するしますか</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'age' 存在する。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'age' 存在しませんする。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// 診る存在しませんする的財産 'address'</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'address'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'address' 存在する。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'address' 存在しませんする。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力の結果は次のとおりです。
<span><span>財産 </span><span><span class="hljs-string">'name'</span></span><span> 存在する。
財産 </span><span><span class="hljs-string">'age'</span></span><span> 存在する。
財産 </span><span><span class="hljs-string">'address'</span></span><span> 存在しませんする。
</span></span>
Property_exists関数は、オブジェクトインスタンスに指定された属性があるかどうかをチェックするだけでなく、属性の可視性(public、Protected、private)もチェックすることに注意する必要があります。これはつまり:
プロパティがプライベートであるか保護されている場合でも、それは真実です。
ただし、プロパティの値が初期化されているかどうかは確認されません。
たとえば、私有地がコンストラクターで初期化されていない場合、プロパティが存在するかどうかをチェックし、プロパティの実際の値を気にしないため、 Property_Existsは依然としてtrueを返します。
プロパティが存在するだけでなく、特定のプロパティにアクセスする前に空ではないことを確認するために、 Property_ExistsやISSETまたは空のような関数と組み合わせて使用する場合があります。例は次のとおりです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Person</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$age</span></span><span>;
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$name</span></span></span><span>) {
</span><span><span class="hljs-variable language_">$this</span></span><span>->name = </span><span><span class="hljs-variable">$name</span></span><span>;
}
}
</span><span><span class="hljs-variable">$person</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Person</span></span><span>(</span><span><span class="hljs-string">"John"</span></span><span>);
</span><span><span class="hljs-comment">// 診る 'age' 財産それは存在するしますか并且已初始化</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span>) && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>->age)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'age' 存在する并且已初始化。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'age' 存在しませんする或未初始化。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// 診る 'name' 財産それは存在するしますか并且已初始化</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span>) && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>->name)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"財産 'name' 存在する并且已初始化。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Property_existsは、オブジェクトの特定のプロパティが存在するかどうかを確認するのに役立つPHPの非常に実用的な機能です。プロパティに直接アクセスするのとは異なり、 Property_Existsを使用すると、存在しないプロパティにアクセスすることによって引き起こされるエラーを効果的に回避できます。この関数を通じて、特に動的に生成されたオブジェクトまたはデータの不確実性を扱う場合、オブジェクトプロパティの存在または不在をより安全に処理できます。