0

我的 php 教程之一是显示波纹管功能。我知道它用于检查属性是否存在,但我无法理解它的真正含义,我的意思是它的注释行的含义是什么?谁能给我解释一下?

private function has_attribute($attribute) {
            //get_object_vars returns an associative array with all attributes
            //(incl.private ones!) as the keys and their current values as the value
            $object_vars = get_object_vars($this);
            //we don't care about the value, we just want to know if the key exists
            //will return true or false
            return array_key_exists($attribute, $object_vars);
        }
4

4 回答 4

4

看看这个例子:

<?php

class someClass
{
    public $someVar1;
    public $someVar2;
}

$cl = new someClass();

$vars = get_object_vars($cl);

print_r($vars);

?>

输出 :

Array
(
    [someVar1] => 
    [someVar2] => 
)

代码所做的是检查您的对象实例是否具有特定属性。

例如

$cl->has_attribute("someVar1");

会回来true的。


参考 :

于 2012-08-21T08:03:38.400 回答
0

这是get_object_vars()的定义

数组 get_object_vars ( 对象 $object )

根据范围获取给定对象的可访问非静态属性。

在这种情况下,这意味着该函数将检查 $attribute 是否已分配给您运行它的类,并返回 true 或 false。

IE

class Foo {
   public $bar = "e";

   private function has_attribute($attribute) {
            $object_vars = get_object_vars($this);
            return array_key_exists($attribute, $object_vars);
   }
}

$foo = new Foo;
$foo->has_attribute('bar'); //true
$foo->has_attribute('fooBar'); //false
于 2012-08-21T08:02:53.110 回答
0

这个函数位于一个类中,返回一个包含所有属性(类中的变量)的数组,并返回一个数组,其中的键设置为属性名称。

它包括私有属性(这意味着通常除了对象本身之外,它们不能在任何地方访问。

它根本不检查属性值,最后返回一个数组,其中带有$attribute传递给它的 atruefalse告诉它是否存在。

于 2012-08-21T08:03:08.480 回答
0

好吧,注释的意思是解释代码行的作用,它们也很好地描述了它们的作用。

<?php

class Foo {
    protected $bar = 'qux';
    public function hasProperty( $name ) {
        return array_key_exists( $name, get_object_vars( $this ) );
    }
}

$foo = new Foo( );
var_dump( $foo->hasProperty( 'does-not-exist' ) ); // false
var_dump( $foo->hasProperty( 'bar' ) ); // true.

请注意,做这样的事情不是“好习惯”;通常,由于某种原因,属性是私有的或受保护的,您不必确定某个属性是否存在。

于 2012-08-21T08:04:12.660 回答