PHP类系列 (一)
春节将近,明天就回家啦,心情无比激动,忙了一年终于可以陪陪家人了。外地人离京后,北京宛如一座‘空城’,今天同事们聊这个事,猛然想起司马迁的一句名言:“天下熙熙,皆为利来;天下攘攘,皆为利往”,现在利的方向应该就是亲情了,风筝收线,无论过去的一年你经历了什么,也都要收拾好心情回家过年。提前祝愿各位新年快乐~
春节期间我也会践行对自己的承诺,每周至少发一篇文章。
同时也要感谢And1读者提出的宝贵建议,大家如果有什么好的建议也可以告诉我哦。
回归正文:今天说说PHP里的类。
1 什么是类
类就是将有些东西归为一类,比如猫、狗、猪,它们都是动物,我们就可以归为一类。类是抽象的,不具体的,如果将类具体就是类的对象,猫、狗就是动物类中的一个对象。学生也可以作为一类,那么小红就是学生类里的一个对象(开发中的术语也叫 ‘实例’ )
粗略点说,类就是很多方法的集合(其实还有属性,属性只是配合方法实现),这些方法是你在程序中经常会用到的一些逻辑或算法,将他们包进类里面,可以提升程序的效率,减少代码的重复。
2 类的定义
每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义。
<?php class SimpleClass { // 声明类的属性 public $var = 'a default value'; // 声明类的方法 public function displayVar() { echo $this->var; } } ?>
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用。其实就是指这个类(代词)
3 类的实例
实例也就是具体的一个对象。 要创建一个类的实例,必须使用 new 关键字。
如果在 new 之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。
// 创建一个实例 <?php $instance = new SimpleClass(); // 也可以这样做: $className = 'Foo'; $instance = new $className(); // Foo() ?>
4 类的继承
可以理解成孩子继承父亲的基因。
① 一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。
② PHP不支持多重继承,一个类只能继承一个基类(其实就是一个孩子只能有一个父亲)。
③ 被继承的方法和属性可以通过用同样的名字重新声明被覆盖(可以理解为儿子改良了父亲原有的基因)。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问被覆盖的方法或属性。
④ 当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。
// 简单的类继承 <?php class ExtendClass extends SimpleClass { // 重新定义父类的方法 function displayVar() { echo "继承类\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ?>
5 类名的解析
使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。
// 类名的解析 <?php namespace NS { class ClassName { } echo ClassName::class; } ?> // 以上输出结果: NS/ClassName
以上就是PHP类系列 (一)的内容,更多相关内容请关注PHP中文网(www.php.cn)!