PHP类系列 (一)

黄舟
发布: 2017-02-06 09:50:16
原创
1716人浏览过

写在文前:

春节将近,明天就回家啦,心情无比激动,忙了一年终于可以陪陪家人了。外地人离京后,北京宛如一座‘空城’,今天同事们聊这个事,猛然想起司马迁的一句名言:“天下熙熙,皆为利来;天下攘攘,皆为利往”,现在利的方向应该就是亲情了,风筝收线,无论过去的一年你经历了什么,也都要收拾好心情回家过年。提前祝愿各位新年快乐~

春节期间我也会践行对自己的承诺,每周至少发一篇文章。

同时也要感谢And1读者提出的宝贵建议,大家如果有什么好的建议也可以告诉我哦。

回归正文:今天说说PHP里的类。

立即学习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)!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号