博主信息
博文 37
粉丝 0
评论 0
访问量 44309
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
面向对象编程基础
手机用户1607314868
原创
779人浏览过

OOP

OOP全称object oriented progrmming 面向对象编程
和面向对象编程不同的是面向过程编程。面向过程编程是直接面向 变量 和函数 编程,没有类和封装。
oop直接面向对象编程,封装了变量和函数的一个编程单元。be本质是封装,目标是代码复用

类 对象的模板

首先声明一个类文件,声明的类与这个类所在的文件推荐同名

权限修饰符
  1. private 私有成员,仅限本类中的使用
  2. protected 受保护成员,仅限本类以及子类让问
  3. public 公共成员
    由上到下,权限越来月大。
    this,self,static
    $this和self指的都是当前类。
    static 是静态标识,不是类实例方法,可以使用类直接访问。
    类模板
  1. class Product{
  2. //属性
  3. //protected 受保护成员,仅限本类以及子类访问
  4. protected $name;
  5. //private 私有成员,仅限本类中的使用
  6. private $price;
  7. //函数
  8. //构造方法
  9. public function __construct($name,$price)
  10. {
  11. //初始化类成员,让类/实例化状态确定下来
  12. //生成类的实例
  13. //2.给这个新类复制属性
  14. $this->name=$name;
  15. $this->price=$price;
  16. //return $obj;
  17. }
  18. //实例方法
  19. public function show():string
  20. {
  21. return "$this->name:$this->price";
  22. }
  23. }

spl_autoload_registe类的自动加载器函数

  1. spl_autoload_register(function($class){
  2. require $class.'.php';
  3. });

引用后require 包含这个函数的文件后,当前也new的对象自动调用这个函数,
注意:类名应和文件名一致,才起作用

静态成员和方法

  1. //类的静态成员
  2. //类中成员,属性和方法
  3. //类中成员并非全部都要使用类实例方法,也可直接使用类访问成员
  4. //这个就是静态成员
  5. class Staff{
  6. public static $name;
  7. public static $salary;
  8. public function __construct($name,$salary)
  9. {
  10. //静态成员与实例无关,当然不能使用$this访问,用类的引用
  11. //self:当前类的引用
  12. self::$name=$name;
  13. self::$salary=$salary;
  14. }
  15. //静态方法
  16. public static function show(){
  17. return 'self::$name, self::$salary';
  18. }
  19. }

注意:类实例可以访问静态方法,但不能访问静态属性

类的扩展

extends 继承,子类只能继承一个父类,可以调用父类除了私有权限的所有属性和方法。也可以自己定义函数方法和属性。

trait

trait 理解为一个公共方法集。
trait 借用了class语法实现的一个轻量级的类,但不是类,所以不能实例化
trait声明一个类,在调用它是只需要在本类中使用use trait声明的类明即可。
一个类中可以调用多个trait。如果trait之间有同名方法,可以设定优先级,或者别名
当trait和父类中有同名方法是,trait优先级比父类高。

  1. trait T1
  2. {
  3. public function m1()
  4. {
  5. return __METHOD__;
  6. }
  7. }
  8. trait T2
  9. {
  10. public function m1()
  11. {
  12. return __METHOD__;
  13. }
  14. }
  15. class A{
  16. //在要使用trait的类中,使用use关键字引用它即可
  17. use T1;
  18. }
  19. class B{
  20. use T1,T2{
  21. //优先级
  22. T1::m1 insteadOf T2;
  23. //别名
  24. T2::m1 as T2m1;
  25. }
  26. }
  27. echo (new A)->m1();
  28. echo (new B)->m1();
  29. //如果要引用多个trait
  30. // 1.优先级
  31. // 2.起别名
  32. echo (new B)->T2m1();
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学