Code前端首页关于Code前端联系我们

PHP 中的对象定义

terry 2年前 (2023-09-29) 阅读数 70 #PHP
文章标签 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前端网发表,如需转载,请注明页面地址。

热门