下面是父类`Animal`的代码:
//by www.qzphp.cn class Animal { protected $name; public function __construct($name) { $this->name = $name; } }
现在,我们可以创建子类`Cat`并通过使用`parent`关键字来获取父类`Animal`的`name`属性的值。下面是子类`Cat`的代码:
//by www.qzphp.cn class Cat extends Animal { public function getName() { echo "Parent class name: " . parent::$name; } } $cat = new Cat("Tom"); $cat->getName();在上面的代码中,子类`Cat`中的`getName`方法使用了`parent::$name`来获取父类`Animal`的`name`属性的值。在我们创建一个`Cat`对象后,调用`getName`方法,我们将看到输出结果为`Parent class name: Tom`,其中`Tom`是我们在创建`Cat`对象时传递的参数。通过这个例子,我们可以看到,通过使用`parent`关键字,我们可以轻松地获取父类的变量值。这对于在子类中使用父类的属性和方法非常有用,尤其是当我们需要访问父类的保护属性时。例如,在上面的示例中,如果我们将`Animal`类的`$name`属性修改为私有属性,那么在子类`Cat`中将无法直接访问该属性。但是,通过使用`parent`关键字,我们可以绕过访问限制并获取父类的属性值。此外,我们还可以在子类中为父类的属性赋新值。如果我们在子类中同时定义了一个和父类相同名称的属性,并给它赋了新值,那么在子类中访问该属性时,将会优先使用子类的属性值。让我们看一个例子来演示这个行为。
下面是一个新的父类`Fruit`的代码:
//by www.qzphp.cn class Fruit { protected $color; public function __construct($color) { $this->color = $color; } }
现在,我们创建了一个子类`Apple`,并在子类中同时定义了一个和父类`Fruit`相同名称的属性`color`,并给它赋了新值。下面是子类`Apple`的代码:
//by www.qzphp.cn class Apple extends Fruit { protected $color; public function __construct($color) { $this->color = $color; } public function getColor() { echo "Child class color: " . $this->color; echo "Parent class color: " . parent::$color; } } $apple = new Apple("Green"); $apple->getColor();在上面的代码中,子类`Apple`中的`getColor`方法通过`$this->color`获取子类的`color`属性值,并通过`parent::$color`获取父类的`color`属性值。当我们创建一个`Apple`对象后,调用`getColor`方法,我们将看到输出结果为`Child class color: Green`和`Parent class color: Green`,其中父类的`color`属性值在子类中也被修改为了`Green`。通过这个例子,我们可以看到,子类中的同名属性会覆盖父类的属性,但我们仍然可以通过使用`parent`关键字来获取父类的属性值。综上所述,使用PHP获取父类的变量值非常简单。通过使用`parent`关键字,我们可以轻松地访问父类的属性和方法,无论是公共的还是受保护的。此外,通过在子类中定义和父类相同名称的属性,我们可以覆盖父类的属性值,但仍然可以通过`parent`关键字获取父类的属性值。这些功能使我们能够更灵活地使用继承,在我们的代码中实现更高的复用性和可维护性。无论是在简单的继承关系还是更复杂的继承链中,我们都可以利用这些特性来优化我们的代码。