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

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools