批改状态:合格
老师批语:
OOP全称object oriented progrmming 面向对象编程
和面向对象编程不同的是面向过程编程。面向过程编程是直接面向 变量 和函数 编程,没有类和封装。
oop直接面向对象编程,封装了变量和函数的一个编程单元。be本质是封装,目标是代码复用
首先声明一个类文件,声明的类与这个类所在的文件推荐同名
class Product{//属性//protected 受保护成员,仅限本类以及子类访问protected $name;//private 私有成员,仅限本类中的使用private $price;//函数//构造方法public function __construct($name,$price){//初始化类成员,让类/实例化状态确定下来//生成类的实例//2.给这个新类复制属性$this->name=$name;$this->price=$price;//return $obj;}//实例方法public function show():string{return "$this->name:$this->price";}}
spl_autoload_register(function($class){require $class.'.php';});
引用后require 包含这个函数的文件后,当前也new的对象自动调用这个函数,
注意:类名应和文件名一致,才起作用
//类的静态成员//类中成员,属性和方法//类中成员并非全部都要使用类实例方法,也可直接使用类访问成员//这个就是静态成员class Staff{public static $name;public static $salary;public function __construct($name,$salary){//静态成员与实例无关,当然不能使用$this访问,用类的引用//self:当前类的引用self::$name=$name;self::$salary=$salary;}//静态方法public static function show(){return 'self::$name, self::$salary';}}
注意:类实例可以访问静态方法,但不能访问静态属性
extends 继承,子类只能继承一个父类,可以调用父类除了私有权限的所有属性和方法。也可以自己定义函数方法和属性。
trait 理解为一个公共方法集。
trait 借用了class语法实现的一个轻量级的类,但不是类,所以不能实例化
trait声明一个类,在调用它是只需要在本类中使用use trait声明的类明即可。
一个类中可以调用多个trait。如果trait之间有同名方法,可以设定优先级,或者别名
当trait和父类中有同名方法是,trait优先级比父类高。
trait T1{public function m1(){return __METHOD__;}}trait T2{public function m1(){return __METHOD__;}}class A{//在要使用trait的类中,使用use关键字引用它即可use T1;}class B{use T1,T2{//优先级T1::m1 insteadOf T2;//别名T2::m1 as T2m1;}}echo (new A)->m1();echo (new B)->m1();//如果要引用多个trait// 1.优先级// 2.起别名echo (new B)->T2m1();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号