Php面向对象学习笔记 ? 构造、析构、对象赋值、克隆
Php面向对象学习笔记 ? 构造、析构、对象赋值、克隆
class student
{
public $stu_id; // 定义成员变量
public $stu_name;
public function sayName() // 成员函数
{
echo $this->stu_name; // $this 访问该对象的成员变量
}
}
$stu = new Student; // 创建对象
$stu->stu_id = ‘0607001’;
$stu->stu_name = ‘小李’;
$stu->sayName();
注意:
class student
{
public $stu_id; // 定义成员变量
public $stu_name;
public function sayName() // 成员函数
{
var_dump($stu_name);
var_dump($GLOBALS[‘stu_name’]); // 两种方法都无法访问成员变量
//只要使用$this-> 才能访问成员变量
}
}
$stu = new Student; // 创建对象
$stu->stu_id = ‘0607001’;
$stu->stu_name = ‘小李’;
$stu->sayName();
注:类中定义的属性,不相当于类中定义的全局变量,不能直接再方法中使用属性变量的形式访问。
1. 构造和析构:
php的opp机制,在new完成时,会试着调用一个叫做__construct()的方法。
如果我们将初始化的代码,写到这个方法内,就可以完成自动初始化。
例子:
class Student
{
public $stu_id;
public $stu_name;
public function__construct($id,$name) // 构造
{
$this->stu_id= $id;
$this->stu_name= $name;
}
}
$stu = new Student(‘100511101’,’songyang’);
注:如果构造方法没有参数,则 $stu = new Student 和 $stu = new Student() 都是对的。
构造方法的兼容性问题:
php5,构造方法的名字,就是__construct().在php5之前,构造方法的名字为与类同名。为了兼容,也同时支持与类同名的构造方法。
如果同时出现__construct() 和类名的构造方法:
例子:
class Student
{
public $stu_id;
public $stu_name;
public function __construct()
{
echo“construct run …”;
}
public function Student()
{
echo‘’Student run …”;
}
{
$stu = new Student;
输出:construct run …
结论:如果同时出现两种构造方法,调用__construct()
析构:
在对象被销毁时,也会自动执行一个方法。
析构方法名字为:__destruct();
class Student
{
public $stu_id;
public $stu_name;
public function __construct()
{
echo“构造方法调用”;
}
//析构
publicfunction __destruct()
{
//释放资源
echo“析构方法调用”;
}
}
该方法,用于释放,该对象所占用的额外资源,不是对象本身的内存空间!
什么情况下,对象会被销毁:
1. 脚本周期结束,对象自动被销毁。
2. 销毁保存该对象的变量。
$stu = new Student;
unset($stu);
输出:析构方法调用
3. 保存对象的变量,被赋值了其他数据。
$stu = new Student;
$stu = “new Value”; // 赋值其他数据时,Student对象被销毁。
对象间的赋值
对象支持引用传递,不用&符号,因此不能通过=赋值的形式,得到一个新的对象。
例子
class Student
{
public $stu_id;
public $stu_name;
public function __construct($id,$name)
{
$this->stu_id= $id;
$this->stu_name= $name;
}
}
$stu1 = new Student(“100”,”song”);
$stu2 = $stu1;
echo $stu1->stu_name;
echo $stu2->stu_name;
$stu1->stu_name = “songyang”;
echo $stu1->stu_name;
echo $stu2->stu_name;
输出:song song songyang songyang
克隆
利用已有对象,得到相同的新对象。
需要使用关键字 clone
新对象 = clone 已有对象
例子:
class Student
{
public $stu_id;
public $stu_name;
public function __construct($id,$name)
{
$this->stu_id= $id;
$this->stu_name= $name;
}
}
$stu1 = new Student(“100”,”song”);
$stu2 = clone $stu1;
echo $stu1->stu_name;
echo $stu2->stu_name;
$stu1->stu_name = “songyang”;
echo $stu1->stu_name;
echo $stu2->stu_name;
输出:song song songyang song
常见的操作,再克隆对象时,需要对对象的某些特殊属性进行修改。意味着,需要做一些特殊的处理。
使用,在克隆时,自动调用的方法 __clone()来实现。
自动使用克隆出来的对象,来调用这个__clone()方法,意味着,该方法内部的$this,表示新对象。
例子:
class Student
{
public $stu_id;
public $stu_name;
public function __construct($id,$name)
{
$this->stu_id= $id;
$this->stu_name= $name;
}
public function __clone()
{
$this->stu_id= “0607002”;
}
}
$stu1 = new Student(“1000”,”joker”);
$stu2 = clone $stu1;
echo $stu1->stu_id;
echo $stu2->stu_id;
输出:1000 0607002

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
