PHP基础语法学习要点5

版权声明:随意了,开心就好。反正是给大家分享的笔记 https://blog.csdn.net/u011486491/article/details/85564393

PHP基础语法学习要点5

面向对象

  1. $this

    这个$this把类指向一个对象的实例:

    1. 对象是通过类实例化来的。每个实例的对象相互是独立的(类是模板,对象是生产出来的产品。)

    2. $this指的就是当前的这个实例、对象代称。

    PSR的标准规范。

  2. 构造函数、构造方法

    这个函数、方法中的代码应该在创建对象的时候将该对象设置为稳定、安全的初始状态。就是用来初始化。

    __construct(参数1,参数2....)

    在创建一个对象时候首先要做的事就是调用构造函数、方法

    注意:

    1. 在其他语言中,构造函数就是和类同名的方法,在PHP的早期版本中可以这样使用,但是在新版本中不建议使用。

  3. 析构函数、析构方法

    析构函数通常用来收尾,因为析构函数会在某个对象被删除(回收)的时候自动调用。

    __destruct(void),不用任何参数。

    注意:

    1. 析构函数,当对象被显式地销毁时候也会被调用。

    2. 在调用exit的时候也会被调用。

和封装有关的魔术方法

魔术方法:在某个时刻自动调用的方法。函数名称不区分大小写,变量名区分大小写

  • __get(属性名),读取不存在或设置为private或protected,的属性的时候自动被调用。

    注意:

    1. 自动调用__get()的结果(reutrn的值)会返回调用处。

    2. 把属性名自动传递进来作为参数了。

    3. __get()修饰必须为public,该方法不是必须要有的。

  • __set(属性名,属性值),设置不存在或设置private、protected的属性的时候自动被调用。

    注意:

    1. 该方法也只能设置为public

    2. 该方法不需要有返回值,及时设置了返回值也没什么用。

  • __isset(属性名),当对不可访问的属性或不存在的属性调用isset()函数或empty()函数时候,自动调用。

  • __unset(属性名),当对不可访问属性调用unset()时,__unset()会被自动调用。

继承

PHP中只支持单继承。

子类中重载父类的方法

可以使用parent::方法名()

注意:

  1. 访问对象中的成员是使用->使用::访问类,parent::say()指的就是访问父类中的say()方法,parent代词代指父类。

  2. 也可以使用类名::方法名()来进行调用,但是不建议使用。

  3. 也有人直接使用类名::方法名()这种方式来替代实例化。

  4. 如果使用第三种方法来调用类中的方法的时候,方法体中不能出现$this

final关键字

继承有时候会破坏封装性。

  • final对于类来说,将会终止类的继承(不能再有子类了),但是本类还是可以正常使用的。

  • final对于方法来说,不能被覆盖/覆写。

注意:

  1. final用来修饰成员方法和类、不能修饰成员属性。

  2. 使用final的时候请你仔细考虑一下,这个类真的以后不用继承了吗?这个类如果被继承的话以后某个方法会不会被覆盖。

static关键字

  • 用static修饰的成员属性,可以被同一个类、在同一个页面实例化出来的多个对象所共享。

  • 静态属于类级别,不是对象级别。所以使用类名::$属性名进行调用。

  • 静态的只保存一份数据、非静态的(实例化)有多少个对象就保存多少份。

  • 将类中的成员标识为静态的,修饰成员属性和成员方法。不能修饰类。

  • 静态属于类级而不是对象级别。

  • 在静态方法中使用静态属性,可以使用类名::$属性名也可以使用self::$属性名

  • 在静态方法中也可以使用静态方法,使用的时候可以用类名::方法名()self::方法名()访问。

  • 在类外部调用的时候可以使用类名::方法名()/类名::$属性名来进行调用,也可以使用对象::方法名()/对象::$属性名来进行调用。这种对象名::方法名()的这种方法不建议用。

总结:

  1. 用static修饰的成员属性,可以被同一个类的所有对象所共享,因为静态成员对于同一类只保留一份数据。

  2. 类静态成员(属性、方法),在本类内部使用时,可以使用类名::静态成员方式来调用也可以使用self::静态成员来进行调用。

  3. 类静态成员(属性、方法),在类外部进行调用的时候可以使用类名::静态成员方式来调用,也可以使用对象名::静态成员来调用。

注意:

  1. 静态方法中不能访问非静态的成员。(在非静态方法中可以访问非静态方法、属性也可以访问静态方法、属性)

  2. 如果确定一个方法不使用非静态的成员,则可以将这个方法声明为静态方法(不用创建对象就能使用。)

const关键字

常量:常量定义后不能更改。类中也有常量。

类中的常量和普通常量的区别:

  • 类中的常量是给本类用的,和本类是息息相关的。

  • 普通的常量,在任何地方都能用。

格式:const 常量名=值

  • 类常量使用在内部可以使用self::常量名也可以使用类名::常量名

  • 类外部定义的常量的使用方法和普通的常量的使用方法是一样的。

  • 类常量使用在外部可以使用对象名::常量名也可以使用类名::常量名。

  • 类中的常量是不能更改的,在常量初始化的时候需要就给定值。

猜你喜欢

转载自blog.csdn.net/u011486491/article/details/85564393