Object.hasOwnProperty.call(object, key) in php
Object.hasOwnProperty.call(object, key) in php
PHP中是否有这个JavaScript代码的等价物?
var object = {}, key;
Object.hasOwnProperty.call(object, key)
或者使用反射(参见:http://www.php.net/manual/en/book.reflection.php):
<?php
$obj = (object)array('test' => 1);
$key = 'test';
$refObj = new ReflectionObject($obj);
var_dump($refObj->hasProperty($key));
对于属性:
property_exists($class_instance, 'YourProperty');
对于方法:
method_exists($class_instance, 'YourMethod');
http://php.net/manual/en/function.property-exists.php
http://php.net/manual/en/function.method-exists.php
这是我使用反射的方法。 http://php.net/manual/en/class.reflectionclass.php
假设我有以下配置:
class A
{
protected static $name = 'blabla';
}
class B extends A
{
//
}
class C extends A
{
protected static $name = null;
}
class D extends A
{
protected static $name = '324';
}
我在基类中定义了这个函数:
class A
{
// ...
public static function hasOwnProperty($property_name)
{
$property = (new 'ReflectionClass(static::class))->getProperty($property_name);
return $property->class === static::class;
}
}
然后我可以从基类本身和任何子类调用它:
>>> A::hasOwnProperty('name');
=> true
>>> B::hasOwnProperty('name');
=> false
>>> C::hasOwnProperty('name');
=> true
>>> D::hasOwnProperty('name');
=> true
请注意,即使值为 null
,它也返回 true
,这是我认为的预期行为。这似乎需要isset()
和property_exists()
的最好。
请记住,反射是一个影响性能的过程。
相关文章:
- Node.js's Buffer.writeFloatBE in Javascript
- Setting default onclick behavior for <img> tag in gene
- Lucene Search in Alfresco
- grep in JQuery to C#
- write HTML in JavaScript
- KeyPress和Keydown在这个特定的代码上不起作用.只有key-up起作用
- jQuery setTimeOut: in for-loop
- SetTimeout and clearTimeout in Javascript
- lightbox in html 5 and javascript
- HTMLInputElement in IE7
- Mongodb$in以与数组中相同的顺序获取结果
- element.dataset in Internet Explorer
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- JS “for (var key in arr)” >抛出我自己的 Array.prototypes,但不是固有的.为什
- JavaScript 每个 - 自动检测 val in 的名称(key,val)
- This.key in React.js 0.12
- Use variable key in CasperJS' fillSelectors
- key的反义词是什么?In obj) In javascript
- 'key' in vs object.key
- Object.hasOwnProperty.call(object, key) in php