我正在学习 PHP,并且已经开始使用类——下面可能是最基本的对象,哈哈。
<?php
class Person {
var $first_name;
var $last_name;
var $arm_count = 2;
var $leg_count = 2;
function say_hello() {
echo "Hello from inside the class " . get_class($this) .".<br />";
}
function full_name() {
return $this->first_name . " " . $this->last_name;
}
}
$person = new Person();
echo $person->arm_count . "<br />";
$person->first_name = 'Lucy';
$person->last_name = 'Ricardo';
echo $person->full_name() . "<br />";
$vars = get_class_vars('Person');
foreach($vars as $var => $value) {
echo "{$var}: {$value}<br />";
}
echo property_exists("person","first_name") ? 'true' : 'false';
?>
然后运行上面的代码,应该会输出一些数据。在课程中(视频培训系列由凯文·斯科格伦德 http://twitter.com/#!/kskoglund, "PHP:超越基础 http://www.lynda.com/home/displaycourse.aspx?lpk2=653",) Kevin 的屏幕看起来正确(他使用的是 5.2.6。)
我的 WAMP 安装版本为 5.3,并且 Person 类的“first_name”属性没有被循环吐出...但是echo property_exists("person","first_name") ? 'true' : 'false';
返回真。
谁能帮助我理解出了什么问题?
property_exists
如果属性存在,则返回 true,无论属性和调用者的范围是什么。
get_class_vars
将返回当前范围内可访问的所有属性,以及它们的静态值或默认值(对于未声明静态的属性)。但是,它不会返回类主体中未声明的属性,也不会接受对象参数。
注意property_exists
如果使用类名查询未在类主体(即:对象上下文)中声明的属性,也会返回 false。
每个例子:
class Foo {
public $foo;
private $bar;
public function test() {
var_dump(get_class_vars(__CLASS__));
}
}
$obj = new Foo;
$obj->baz = 'hello';
property_exists($obj, 'bar'); // true
property_exists($obj, 'baz'); // true
property_exists(get_class($obj), 'baz'); // false
get_class_vars(get_class($obj)); // you get "foo" only
$obj->test(); // you get "foo" and "bar", not "baz"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)