PHP 访问对象属性和方法

本文最后更新于:2024年3月18日 凌晨

PHP 访问对象属性和方法

  • 一旦创建了一个对象,你可以用->符号来访问对象的属性(property)和方法(method)
1
2
$object->propertyname
$object->methodname([arg,...])
  • 例如:
1
2
3
printf("Rasmus is %d years old.\n".$rasmus->age);// 属性访问。
$rasmus->birthday();// 方法调用。
$rasmus->set_age(21);// 带参数的方法调用。
  • 方法(method)相当于对象中的函数,他们可以带有参数,也可以有返回值:
1
$clan = $rasmus->family('extended');
  • 在定义一个类时,你可以用public关键字指定哪些方法和属性是可以从类外部访问的,用private关键字指定哪些是只能在类内部访问的,这样你就可以实现封装(encapsulation):
  • 你可以使用可变变量来访问属性:
1
2
$prop = 'age';
echo $rasume->$prop;
  • 静态方法通过类来调用,而不通过对象,不能通过对象,不能通过这样的方法访问属性,静态方法的名称由类名加上::和函数名构成,例如,调用HTML类中的静态方法p():
1
HTML::p("Hello, world");
  • 当声明一个类时,你要用访问方式关键字static来标识静态属性和方法。
  • 对象一旦创建,就会通过引用传递,也就是说,不会复制整个对象(即耗时又耗内存),而只是传递该对象的引用,例如:
1
2
3
4
$f = new Person('Fred',35);
$b = $f; //Object $b和$f指向相同的对象。
$b->srt_name('Barney');
printf("%s and %s are best friends.\n",$b->get_name(),$f->get_name()); // 输出:Barney and Barney are best friends.
  • 如果你确实想要得到一个对象的拷贝(也可称为副本),你可以使用clone操作符:
1
2
3
4
$f = new Person('Fred',35);
$b = clone $f; // 得到对象的一个副本。
$b->set_name('Barney');// 改变副本的内容。
printf("%s and %s are best friends.\n",$b->get_name(),$f->get_name()); // 输出:Fred and Barney are best friends.

提示:当你使用clone操作符来创建一个对象的副本时,如果该对象的类定义中有一个名为_clone()的方法,这个类方法会在对象被复制后立即被调用,当一个对象带有外部资源(如一个文件句柄)时,你可以用这个功能来建立新的资源,而不是复制已有的资源。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!