PHP 中的对象定义
在 PHP 中,定义对象是面向对象编程 (OOP) 的重要组成部分。对象是一种复合数据类型,包含数据和函数,并且可以与其他对象进行通信。下面从多个方面详细介绍PHP中的对象定义。
1。创建对象
要创建对象,您需要使用 new 运算符和类名。在使用类名的实例化过程中,类名后面必须跟有一对半括号。以下是基类声明和实例化代码:
class MyClass {
public $property1 = "I am a class property!";
public function set_property1($newval) {
$this->property1 = $newval;
}
public function get_property1() {
return $this->property1;
}
}
$obj = new MyClass;
上面的代码首先声明了一个名为MyClass的类,然后实例化$obj对象。一旦对象被实例化,您就可以访问类中定义的变量和函数。可以通过对象访问运算符 (->) 访问对象的属性和方法,例如:
$obj->set_property1("I am a new value assigned to the class property!");
echo $obj->get_property1();
上面的代码访问对象中的set_property1()方法,将对象中的属性值赋值为“我为类属性分配了新值!”,然后使用get_property1()方法获取属性的值和输出。输出是:我已为类属性分配了新值!。
2。对象的继承
在PHP中,可以通过继承来实现类的重用。继承的类称为子类,继承的类称为父类。子类继承父类的属性和方法,并且可以根据需要添加或重载属性和方法。
这是一个简单的继承示例:
class MyParentClass {
protected $myVar = "I am a parent class variable!";
public function setVar($newval) {
$this->myVar = $newval;
}
public function getVar() {
return $this->myVar;
}
}
class MyChildClass extends MyParentClass {
protected $myVar = "I am a child class variable!";
}
$obj = new MyChildClass;
echo $obj->getVar();
上面的代码声明了一个名为MyParentClass的父类和一个名为MyChildClass的子类。子类MyChildClass继承了父类MyParentClass中的属性和方法。父类中的myVar属性在子类中被重载。实例化$obj对象后,调用getVar()方法输出属性值。输出是:我是子类的变量!。
3。对象访问控制
在PHP中,对象访问控制是通过public、protected和private关键字来实现的。这些关键字用于限制类属性和方法的访问范围。
- public:属性和方法可以在课堂内外自由访问。
- protected:属性和方法可以在类及其子类内部访问,但不能在类外部访问。
- private:属性和方法只能在类内部访问,不能在类或子类外部访问。
以下是访问控制的示例:
class MyClass {
public $publicVar = "I am a public variable!";
protected $protectedVar = "I am a protected variable!";
private $privateVar = "I am a private variable!";
public function getPrivateVar() {
return $this->privateVar;
}
}
$obj = new MyClass;
echo $obj->publicVar;
//echo $obj->protectedVar; //会报错
//echo $obj->privateVar; //会报错
echo $obj->getPrivateVar();
上面的代码中,MyClass类中定义了三个属性:publicVar、protectedVar、privateVar,分别定义了public、protected、private的访问控制。访问publicVar属性时不会报错,并且可以访问,但是访问protectedVar和privateVar属性时会报错。但是,该类中定义的 getPrivateVar() 方法允许在类外部访问 privateVar 属性,并且程序可以正常运行。
4。物体破坏者
在 PHP 中,当对象被销毁时,会自动调用对象的析构函数。当代码执行完成、通过显式调用禁用来销毁对象或当 PHP 解释器终止时(例如使用 exit() 函数或程序由于致命错误而终止时),对象可能会被销毁。
以下示例演示如何定义和使用析构函数:
class MyClass {
public function __construct() {
echo "对象被创建!";
}
public function __destruct() {
echo "对象被销毁!";
}
}
$obj = new MyClass;
unset($obj);
上面的代码分别定义了一个MyClass类以及一个__construct()和一个__destruct()方法。 __construct() 方法在创建对象时自动运行,而 __destruct() 方法在对象销毁时自动运行。程序执行后,输出结果为:对象已创建!物体已被摧毁! 。
5。对象序列化和反序列化
对象序列化是指将对象转换为字符串的过程。序列化的对象可以保存到文件中或通过网络发送。对象反序列化是指将序列化的字符串转换为对象的过程。
下面是序列化和反序列化的示例:
class MyClass {
public $publicVar = "I am a public variable!";
private $privateVar = "I am a private variable!";
public function __set($name, $value) {
echo "Setting $name to $value
";
$this->$name = $value;
}
public function __get($name) {
echo "Getting $name
";
return $this->$name;
}
}
$obj = new MyClass;
$obj->publicVar = "New value for public variable!";
$serialized = serialize($obj);
$obj2 = unserialize($serialized);
echo $obj2->publicVar;
上面的代码中,定义了一个类MyClass,并分别定义了方法__set()和__get()。这两个方法在赋值和获取对象属性时会自动调用。实例化 $obj 对象并更改该对象的 publicVar 属性值。使用serialize()函数序列化$obj对象并将其存储在$serialized变量中。然后使用unserialize()函数将序列化后的字符串反序列化,得到$obj2对象。输出$obj2对象的publicVar属性值。结果是:公共变量的新值!。
6。结论
上面是对PHP中对象定义的详细阐述,包括对象的创建、继承、访问控制、析构函数以及对象序列化和反序列化的具体方法。面向对象编程是一种重要的编程范式。掌握对象的定义和使用可以提高程序的可读性和可维护性。 PHP中的对象定义比较简单,对于初学者来说非常友好。希望这篇文章能够帮助PHP初学者理解和掌握对象定义。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网