7. 类与对象

基本概念

参考:7.1 类的概念

访问控制

针对对象的属性和方法,可以使用访问控制来限制它的作用域

public:公开的,在类中、实例中、子类中都能访问

protected:受保护的,在类中、子类中可以访问

private:私有的,仅能在类中访问

static:静态的,在哪都能用

类的属性在定义时必须指定访问控制级别,像下面这样:

// 类
class Foobar{
    // 我将报错
    $abc = "123";

    // 我不会报错
    public $test = 456;
}

类的方法如果不指定访问控制级别,那么默认就是 public 公开的。

属性常量

参考:7.2 类的属性

对象继承

参考:7.3 对象继承

自动加载

参考:7.4 类的自动加载

构造和析构

参考:7.5 构造和析构

范围解析操作符

参考:7.6 范围解析操作符

静态属性

一个类的属性和方法可以使用 static 标记为静态的,如没有显示指定访问控制级别,则默认为公开的。

静态成员需要使用 :: 范围解析操作符 来访问。

静态成员可以不用实例化对象而直接访问,但静态属性不能使用实例化对象来访问,而静态方法可以。

抽象类

参考:7.7 抽象类

对象接口

参考:7.8 对象接口

Trait

参考:7.9 Trait

匿名类

参考:7.10 匿名类

重载

参考:7.11 重载

遍历对象

参考:7.12 遍历对象

魔术方法

参考:7.13 魔术方法

Final 关键字

final 关键字可以应用到类或方法上
final 应用在类上时,该类无法被继承
final 应用在方法上时,该方法无法被重写

对象复制

对象的赋值通常是引用的,通过 clone 关键字可获取一个新的拷贝,使用 clone 后, 系统会先执行该对象的 __clone 方法,可以根据需要在该魔术方法中执行一些修改属性的操作。

// 定义类
class Example{
    // 我的属性
    private $foo = 123;
    private $bar = 'abc';
    // clone
    public function __clone(){
        $this->foo = 789;
    }
}
// 实例化
$exam = new Example();
// object(Example)#1 (2) { ["foo":"Example":private]=> int(123) ["bar":"Example":private]=> string(3) "abc" }
var_dump($exam);

// 执行复制
$temp = clone $exam;
// object(Example)#2 (2) { ["foo":"Example":private]=> int(789) ["bar":"Example":private]=> string(3) "abc" }
var_dump($temp);

对象比较

两个对象的属性和值相同,且是同一个类的实例,那么在执行 == 比较时,相等。
两个对象的属性和值相同,且是同一个类的同一个实例,那么在执行 === 比较时,相等。
判断一个对象是否为某一个类的实例,可以使用 instanceof 关键字。

类型约束

函数或类的方法可以对参数进行类型约束,调用时必须传递指定类型的数据,否则报错。

// 定义类
class Example{
    // 给方法的参数增加类型约束
    public static function fn(string $str){
        echo $str;
    }
}
// 给函数的参数增加类型约束
function fun(int $num){
    echo $num;
}
// 调用
Example::fn('hello world');
fun(123);

后期静态绑定

static 不在会被解析成定义当前方法所在的类了,而是根据实际运行时来计算。

当一个类的方法中使用了 static 关键字,那么到时候调用这个方法时,static 的指向并非是当前类,有可能指向其他父类。

static 的指向是上一个 非转发调用 时系统自动保存下来的类,转发调用 指的是 self::parent::static:: 等。

后期静态绑定这个概念通常会出现在继承关系中。

$this 代表的是当前实例

self 代表的是当前类、通常用于调用当前类的静态属性

parent 代表父类

对象的序列化

可以使用 serialize() 将对象进行序列化成字符串,然后将字符串保存,在另外一个脚本中使用 unserialize() 将保存的字符串读取传递进去,重新得到该对象。

需要注意的是,在 unserialize() 之前,记得 include 将类的定义文件引入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,863评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,572评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,066评论 0 62
  • 最近迟到次数却越来越多了,每次迟到心里也都会不好意思,回到办公室说今天早上娃娃又不愿早起之类的,同事说,小孩子都起...
    二解阅读 496评论 1 1