1. 实例演示类声明,类的实例化,类的静态成员与类的扩展;
  2. 描述trait功能,以及trait与父类的区别与联系,并实例演示trait 的冲突与优先级的解决方案

一、类声明,类的实例化,类的静态成员与类的扩展

1.1类声明

一个文件只保存一个类,文件名中包含类名,
文件名:类名.class.php
类名:单词的首字母大写

  1. [修饰类的关键字] class 类名 {
  2. 成员属性
  3. 成员方法
  4. }

(1)成员属性,在类中声明的变量,称为成员属性。声明时,变量前面必须使用一个关键字,如使用public、private、static等关键字修饰,如不需要有特殊意义的修饰,则可使用var关键字
(2)成员方法,在类中声明的函数,称为成员方法。

1.2类的实例化

(1)类创建后,可以使用 new 运算符来实例化该类的对象

  1. $变量名 = new 类名称;

对象引用$this
成员方法属于哪个对象,$this引用就代表哪个对象。

  1. <?php
  2. class Person {
  3. var $name;
  4. function say(){
  5. echo 'my name is '.$this->name;
  6. }
  7. }
  8. $user = new person; //实例化对象
  9. $user->name = 'tianpenglaoshi'; //对象属性的赋值
  10. $user->say(); //访问对象的成员方法
  11. //输出:my name is tianpenglaoshi

(2)构造方法
构造方法的作用是为成员属性初始化;
构造方法是在对象创建完后,第一个自动调用的方法;
构造方法,方法名固定,在PHP4中构造方法名与类名一致;PHP5中是 __construct()

  1. <?php
  2. class Person {
  3. var $name;
  4. var $age;
  5. var $mail;
  6. function __construct($name='', $age=16,$mail='hr@tlbh@baidu.cn'){
  7. $this->name = $name;
  8. $this->age = $age;
  9. $this->mail = $mail;
  10. }
  11. function ary(){
  12. echo $this->name.$this->age.$this->mail;
  13. }
  14. }
  15. $user= new person('黄蓉');
  16. $user->ary();
  17. //输出:黄蓉16hr@tlbh@baidu.cn
  1. <?php
  2. //类的属性和方法:
  3. //1.public:公开的
  4. //2.privote:私有成员,只有本类中使用
  5. //3.protedcted:被保护的,仅限本类和子类访问
  6. class Product{
  7. //类的属性:
  8. protected $price;
  9. public $name;
  10. //构造函数:
  11. public function __construct($name,$price)
  12. {
  13. $this->name=$name;
  14. $this->price=$price;
  15. }
  16. //类的方法
  17. public function count():string
  18. {
  19. return "商品名称:$this->name,单价:$this->price";
  20. }
  21. };
  22. $user = new Product("Redmi 10X",1899);
  23. echo $user->count();
  24. echo '<hr>';
  25. echo $user->name;

图示:
类构造方法

1.3类的静态成员

static(静态)
1)static可以修饰成员属性和成员方法,不能修饰类;
2)用static修饰的成员属性,可以被同一个类的所有对象共享;
3)静态的数据是存在内存中的数据段中(初始化静态段);
4)静态的数据是在类每次加载时分配到内存中的,以后再用到类时就直接从数据段中获取;
5)静态成员要用类名去访问,不用对象去访问;
类名::静态成员属性名
类名::静态成员方法名()
6)如果在类中使用静态成员,可以使用self代表本类;
self::静态成员属性名
self::静态成员方法名()
7)静态方法(static修饰的方法),不能访问非静态的成员。
7)静态方法(static修饰的方法),不能访问非静态的成员。**

  1. <?php
  2. class user
  3. // 静态属性
  4. {
  5. public static $name;
  6. public static $like;
  7. // 静态方法
  8. public static function show()
  9. {
  10. return 'My Name is '. static::$name .'. and I like:' . static::$like;
  11. }
  12. }
  13. class user1 extends user
  14. {
  15. public static $name='Huangrong';
  16. public static $like='Eight-diagram palm;
  17. ';
  18. }
  19. class user2 extends user
  20. {
  21. public static $name='Guojin';
  22. public static $like='Swordsmanship';
  23. }
  24. echo user1::show();
  25. echo '<hr>';
  26. echo user2::show();

图示:
类的静态成员

1.4类的扩展

  1. <?php
  2. require 'loader.php';
  3. $staff = new Staff('马大哥',29);
  4. // 访问类的静态属性
  5. echo Staff::$name;
  6. echo' <hr>';
  7. // 访问类的静态方法
  8. echo Staff::show();
  9. echo' <hr>';
  10. // 访问实例的静态方法
  11. echo $staff->show();
  12. // 不能访问实例的静态属性

更多相关文章

  1. PHP面向对象编程
  2. 0202-类声明及类的实例化,静态成员与类的扩展,trait与父类的区别
  3. 类声明-实例化-成员-继承-trait特征类
  4. PHP类与对象的基础概念
  5. 数组排序-合并-成员统计-交差并补
  6. 数组的排序, 数组的合并, 数组成员的统计
  7. Android(安卓)NDK 开发教程四:TwoLibs示例
  8. C调用Java
  9. android逆向学习,笔记(四)IDA Pro Android(安卓)静态分析

随机推荐

  1. Android Studio Toast/Notification中文
  2. Android Overview
  3. Android的Adapter与BaseAdapter的介绍
  4. Android 控件属性
  5. Android练习——Spinner二级联动_城市选
  6. Android屏幕尺寸、标题栏高度、状态栏高
  7. Android解析json数组对象
  8. android SAX 解析 xml文档
  9. AndroidTextView的跑马灯效果,解决复杂布
  10. android 随手记 摄像头录像