博主信息
博文 37
粉丝 2
评论 0
访问量 34580
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
0202-类声明及类的实例化,静态成员与类的扩展,trait与父类的区别
世纪天城
原创
941人浏览过

类声明及类的实例化```php

  1. <?php
  2. // class关键字声明类
  3. class a{
  4. public $name ;//public公共成员
  5. protected $price ;//protected受保护的成员,在当前类中和子类中访问,类的外部不可访问
  6. private $sum ;//private私有成员,仅限本类中访问
  7. protected static $combined ; //static 关键字用来声明静态成员和方法
  8. // __construct 类的构造函数
  9. public function __construct($name = '',$price = '',$sum = '')
  10. {
  11. // $this是类实例的引用
  12. // 用$this关键字来对类的成员属性进行初始化
  13. $this->name =$name;
  14. $this->price=$price;
  15. $this->sum=$sum;
  16. }
  17. public function show(){
  18. return '名称:' .$this -> name.' 单价:'.$this->price . '元' . ' 数量: ' . $this->sum . '个';
  19. }
  20. public static function index($combined){
  21. // $this 代表当前对象!! 静态方法中应该使用 类名 、 self 或者 static 关键字来代替!
  22. return self::$combined = $combined;
  23. }
  24. public function combined(){
  25. $data = '名称:' .$this -> name.' 单价:'.$this->price . '元 数量: ' . $this->sum . '个 合计:' . $this ->price * $this->sum . '元';
  26. return $data;
  27. }
  28. }
  29. // new关键字用来实例化类
  30. $obj = new a('php',99,2);
  31. // 类实例调用
  32. //
  33. echo $obj -> show();
  34. echo '<br>';
  35. echo $obj -> combined();
  36. echo '<br>';
  37. // 注:类实例也可以访问静态方法,但不推荐这样用;并且类实例不能访 问静态成员
  38. echo $obj -> index('你好php111');
  39. echo '<br>';
  40. // 用静态访问静态方法
  41. //注:不能用静态访问普通成员和普通方法
  42. echo a::index('你好php');

静态成员与类的扩展

  1. <?php
  2. class static1{
  3. public static $name;
  4. protected static $age;
  5. public function __construct($name,$age)
  6. {
  7. // self关键字为类的引用 仅限在本类中使用
  8. // 也可以使用static关键字来访问类中的静态方法及静态成员
  9. self::$name=$name;
  10. self::$age=$age;
  11. }
  12. public static function show(){
  13. return "姓名: ".self::$name . " 年龄:" . self::$age;
  14. }
  15. }
  16. // new static1('张三','25');
  17. // 在类外可以是类名方位静态方法及静态成员 无需new一个对象
  18. // echo static1::$name;
  19. echo static1::show();

trait与父类的区别

trait类:

  1. <?php
  2. trait b{
  3. // trait: 理解为一个公共方法集
  4. // trait 借用了class语法实现的一个轻量级的"类",但不是类,所以不能"实例化"
  5. // 要使用trait的类中,在子类中使用use关键字引用它即可
  6. // 引入并继承trait b类
  7. // 为防止trait重名可以取别名:
  8. // use b{
  9. // 别名
  10. // b::show as b_show;
  11. // }
  12. // 注:在父类和trait及子类中同时存在同一方法时 子类优先级最高 其次是trait,最后才是父类
  13. public function show(){
  14. return '欢迎学习php';
  15. }
  16. }

父类:

  1. <?php
  2. class parent1{
  3. public $name;
  4. public $age;
  5. public function __construct($name = '',$age = '')
  6. {
  7. $this -> name = $name;
  8. $this -> age = $age;
  9. }
  10. public function show(){
  11. return "姓名:{$this -> name} 年龄:{$this -> age}";
  12. }
  13. }

子类:

  1. <?php
  2. // extends为 继承父类或者扩展
  3. class wage extends parent1{
  4. // 引入并继承trait b类
  5. // 为防止trait重名可以取别名:
  6. // use b{
  7. // 别名
  8. // b::show as b_show;
  9. // }
  10. use b;
  11. public function __construct($name='',$age='',$wage='')
  12. {
  13. // parent调用父类中的方法和属性
  14. parent::__construct($name,$age);
  15. $this->wage =$wage;
  16. }
  17. // public function show(){
  18. // return parent::show(). " 工资: " .$this->wage;
  19. // }
  20. }

类的自动加载器

  1. <?php
  2. // 类的自动加载器
  3. spl_autoload_register(function($className){
  4. // echo $className;
  5. require $className.'.php';
  6. });
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学