Blogger Information
Blog 37
fans 0
comment 0
visits 34776
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
面向对象编程基础
手机用户1607314868
Original
565 people have browsed it

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();
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post