分享下php5类中三种数据类型的区别

这篇文章主要介绍了php5类中三种数据类型的区别,需要的朋友可以参考下

public: 公有类型

在子类中可以通过self::var 来调用 public类型的方法或属性 可以通过parent::method 来调用父类中的方法

在实例中可以能过$obj->var 来调用 public类型的方法或属性

protected: 受保护类型

在子类中可以通过self::var 来调用 protected类型的方法或属性 可以通过parent::method 来调用父类中的方法

在实例中不能通过$obj->var 来调用 protected类型的方法或属性

private: 私有类型

该类型的属性或方法只能在该类中使用,在该类的实例、子类中、子类的实例中都不能调用私有类型的属性和方法

2.self 和 parent 的区别

a).在子类中常用到这两个对像。他们的主要区别在于self可以调用父类中的公有或受保护的属性,但parent不可以调用

b).self:: 它表示当前类的静态成员(方法和属性) 与 $this 不同,$this是指当前对像

附代码:

  1. <?php
  2. /**
  3. * parent 只能调用父类中的公有或受保护的方法,不能调用父类中的属性
  4. * self  可以调用父类中除私有类型的方法和属性外的所有数据
  5. */
  6. class User{
  7. public $name;
  8. private $passwd;
  9. protected $email;
  10. public function __construct(){
  11. //print __CLASS__." ";
  12. $this->name= 'simple';
  13. $this->passwd='123456';
  14. $this->email = 'bjbs_270@163.com';
  15. }
  16. public function show(){
  17. print "good ";
  18. }
  19. public function inUserClassPublic() {
  20. print __CLASS__.'::'.__FUNCTION__." ";
  21. }
  22. protected function inUserClassProtected(){
  23. print __CLASS__.'::'.__FUNCTION__." ";
  24. }
  25. private function inUserClassPrivate(){
  26. print __CLASS__.'::'.__FUNCTION__." ";
  27. }
  28. }
  29. class simpleUser extends User {
  30. public function __construct(){
  31. //print __CLASS__." ";
  32. parent::__construct();
  33. }
  34. public function show(){
  35. print $this->name."//public ";
  36. print $this->passwd."//private ";
  37. print $this->email."//protected ";
  38. }
  39. public function inSimpleUserClassPublic() {
  40. print __CLASS__.'::'.__FUNCTION__." ";
  41. }
  42. protected function inSimpleUserClassProtected(){
  43. print __CLASS__.'::'.__FUNCTION__." ";
  44. }
  45. private function inSimpleUserClassPrivate() {
  46. print __CLASS__.'::'.__FUNCTION__." ";
  47. }
  48. }
  49. class adminUser extends simpleUser {
  50. protected $admin_user;
  51. public function __construct(){
  52. //print __CLASS__." ";
  53. parent::__construct();
  54. }
  55. public function inAdminUserClassPublic(){
  56. print __CLASS__.'::'.__FUNCTION__." ";
  57. }
  58. protected function inAdminUserClassProtected(){
  59. print __CLASS__.'::'.__FUNCTION__." ";
  60. }
  61. private function inAdminUserClassPrivate(){
  62. print __CLASS__.'::'.__FUNCTION__." ";
  63. }
  64. }
  65. class administrator extends adminUser {
  66. public function __construct(){
  67. parent::__construct();
  68. }
  69. }
  70. /**
  71. * 在类的实例中 只有公有属性和方法才可以通过实例化来调用
  72. */
  73. $s = new administrator();
  74. print '-------------------';
  75. $s->show();
  76. ?>