PHP 核心技术与最佳实践

本文深入探讨PHP的面向对象特性,包括final、self、static、const等关键字,以及魔术方法如__clone、__autoload、__toString等。同时讲解了序列化、自动加载类、接口、抽象类、多态、 Trait、HTTP协议和Cookie的应用。
摘要由CSDN通过智能技术生成

面向对象

就是把面向过程 抽象成类 然后封装
核心思想: 对象 封装 可重用性 可扩展性 可维护
parent:: demo()
若是子类覆盖可以 调用父类中方法

final 关键字

在 类 前面加 使类为 终极类 不可被继承
在方法前加 使方法不可被子类的方法覆盖

self 关键字

调用类中的 的 静态属性 方法

static 关键字

静态属性 多个对象共享静态属性

const 常量

只读 要有初始值 不能重新赋值
类中只能使用self调用 类外 :: 静态调用方式

instanceof

判断 一个对象是类的实例 类的子类 某个接口

clone

$obj = new A;
$a = clone $obj; //使用关键字克隆(复制)对象,创建一个对象的副本,2方 互不干扰,完全独立

———clone() 魔术方法

使用clone时自动 调用 用来为新的对象赋值

魔术方法

serialize 序列化 unserialize 反序列化

类中添加此方法 序列化室自动调用
function __sleep()
{
return [‘a’,‘b’]; 返回一个数组 数组中的 a b 将被序列化 其余忽略
}

function __wakeup() 没参数 没返回值
{
$this->a=2; // 反序列化 触发 为新对象中的a 重新赋值
}

自动加载类 __autoload

function __autoload($classname){}
$obj = new A;
当 A 类不存在则自动调用autoload 魔术方法 将A当做参数传入

__toString()

当一个对象被当作字符串对待的时候,会触发这个魔术方法

__set _get

__get 类外调用类中的受保护 protected和私有属性private 时 触发
有一个参数 调用的不存在的属性名 or 访问权限不足的属性名

class Person{
   
    public $name = '周伯通';
    private $sex = '男';
    function __get($name){
      //这里参数 是 sex    $class-> 传参
        echo '个人信息:'.$name.$this->sex;   
    }
}
$class = new Person();  
echo $class->sex;//个人信息:sex男

__set 类外 改变 类中的受保护 protected和私有属性private 时 触发
有两个参数
参1 调用的不存在的属性名 or 访问权限不足的属性名
参2 需要设置的属性值

<?php
class Person{
   
    public $name = '周伯通';
    private $sex = '男';
    function __set($name, $val){
   
        //echo '个人信息:'.$this->$name = $val;
        $this->$name = $val; //注意 这里是$name,是要设置访问的变量名,如果大家用$this->name,会看到本例会输出的是 男
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值