带你看懂PHP中的class定义类与成员属性方法

在之前的文章中给大家带来了《PHP中自定义错误处理函数与错误屏蔽你会了吗?》,其中详细的给大家带来了PHP错误处理的相关知识,本篇我们一起来看一下PHP中面向对象的相关知识,希望对大家有帮助!

在之前的文章中给大家带来了《PHP中自定义错误处理函数与错误屏蔽你会了吗?》,其中详细的给大家带来了PHP错误处理的相关知识,本篇我们一起来看一下PHP中面向对象的相关知识,希望对大家有帮助!

带你看懂PHP中的class定义类与成员属性方法

php入门到就业线上直播课:进入学习API 文档、设计、调试、自动化测试一体化协作工具:点击使用

面向对象其实就是将需要处理的问题抽象作为一个对象,然后通过对象的属性和行为来解决对象的实际问题。那我们一起来看一看应该怎样在PHP中去定义类与对象。

class定义类

在PHP中,这个类是一个抽象的概念。我们可以理解为世界上的任何事物都有自身的属性与方法,属性指的就是一个事物的性质,例如一个篮球,它的属性指的就是它的大小、颜色、重量之类的;它的方法也就是他所具有的功能。

总而言之,类是变量(类的属性)与作用于这些变量的函数(类的方法)的集合,属性与方法是构成类的基础。

在PHP中我们可以通过class关键字加类名的方式定义一个类,它的语法格式如下:

[修饰类的关键字] class 类名{
类的属性和方法;
}登录后复制

类名的命名规则与变量名与函数名的命名规则是非常类似的,都遵循的是PHP中的自定义命名规则。

  • 类名要以字母和或者下划线开头,由字母、数字和下划线组成。

  • 当类名有多个单词构成的时候,一般情况下习惯把每个单词的首字母大写,

  • 需要注意的是,类名最好还是要有一定的意义,最好不要由随便的几个字母组成。

在上述语法格式中,里面修饰类的关键字是可以省略的,通常使用abstract和final作为关键字来修饰类。

成员属性

了解类的语法格式后,我们就应该了解到类的成员属性,什么是成员属性,我们把在类中直接声明的变量成为成员属性,也叫做成员变量。在类中能够声明多个变量,也就是在类中有多个成员属性,每个变量都储存类的不同的属性信息。它的语法格式如下:

访问权限修饰符 属性名称 = 属性值;登录后复制

其中我们需要注意的是,在类中声明成员属性时,一定要在前面使用一个关键字来修饰,这个和声明变量时不一样,在类中声明变量必须要有关键字来修饰。其中一些关键字是有意义的,如果不需要有别的意义来进行修饰的话要使用“var”关键字来修饰,它是没什么特定意义的,但是一旦有别的特定意义就要用别的关键字来修饰。

接下来给大家列举一些常用的修饰关键字:

  • public:用它修饰后声明的成员属性,在类的内部、子部和外部都可以使用,不会受到限制,表示它是一个公共的。

  • protectrd:用它修饰后声明的成员属性,在类的内部和子部可以使用,但是不能再类的外部使用。

  • pirvate:用它修饰后声明的成员属性,只能够在类的内部使用,不能再类的子部和外部使用。

实例如下:

登录后复制

定义一个名为Family的类,在类中用不同的关键字修饰成员属性。

成员方法

成员方法就是在类中定义的函数 ,函数实现的是某一个独立的功能,与函数不同的是,成员方法实现的是类的一个行为,是类的一部分。在类中可以声明多个成员方法,在声明成员方法时需要注意的是,可以在function关键字的前面加上访问权限修饰符来控制访问权限。

实例如下:

登录后复制

在PHP中,还有类型声明,

引入了类型声明,我们可以为成员方法的形参和返回值声明类型,格式如下所示:

[权限修饰符] function 方法名 (类型 参数1, 类型 参数2, …, 类型 参数n) : 返回值类型 {
… …
}登录后复制

其中参数类型可以包括整型、字符串型、浮点型和布尔型,实例如下:

登录后复制

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

详解PHP面向对象之后期静态绑定

转载2021-01-27 08:58:322242 + php学习QQ群(点击入群)

推荐:《PHP视频教程》

介绍

自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。

准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的类名。当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进行非静态方法调用时,即为该对象所属的类。所谓的“转发调用”(forwarding call)指的是通过以下几种方式进行的静态调用:self::,parent::,static:: 以及 forward_static_call()。可用 get_called_class() 函数来得到被调用的方法所在的类名,static:: 则指出了其范围。

转发调用&非转发调用

转发调用

所谓的转发调用是指:在类的方法调用中转发调用信息(可以理解为调用栈信息)

  • 转发调用的时机

    • parent调用

    • self调用

    • static调用

    • forward_static_call()

      非转发调用

      所谓的非转发调用是指:是明确的指定静态调用的类名或通过对象(伪对象)实例的调用

      代码解析

      <?phpclass A{public static function foo(){
      static::who();}public static function who(){
      echo __CLASS__ . \"\\n\";}}class B extends A{public static function test(){
      //非转发调用
      A::foo();
      //转发调用
      parent::foo();
      //转发调用
      self::foo();}public static function who(){
      echo __CLASS__ . \"\\n\";}}class C extends B{public static function who(){
      echo __CLASS__ . \"\\n\";}}//非转发调用C::test();登录后复制

      后期静态绑定

      该功能从语言内部角度考虑被命名为“后期静态绑定”。“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

      后期静态绑定实现原理

      后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的类名。这句话的意思就是在程序运行过程中到底如何确认static是哪个类,确定规则是取上次存储的非转发调用的类

      后期静态绑定应用

  • 单例继承场景

  • 抽象类和实现类

php入门到就业线上直播课:立即学习全程直播 + 实战授课 + 边学 + 边练 + 边辅导

以上就是详解PHP面向对象之后期静态绑定的详细内容,更多请关注钦钦技术栈其它相关文章!

转载至:php中文网【www.php.cn】

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/27552/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022-09-30 3:52:58
下一篇 2022-09-30 3:53:36

软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!