php - PHP中类中的增量问题
问题描述
我正在学习PHP,我有两个类,我希望每次实例化一个类并调用“getNbVehicules()”方法来显示创建的实例数。问题是,它似乎无法正常工作,因为我调用该方法时只出现“1”。请帮帮我。
<?php
class Vehicule{
private $marque;
private $couleur;
private $annee;
private $nbVehicules;
public function __construct($uneMarque, $uneCouleur, $uneAnnee){
$this->marque=$uneMarque;
$this->couleur=$uneCouleur;
$this->annee=$uneAnnee;
$this->nbVehicules=0;
}
public function getMarque(){
return $this->marque;
}
public function getCouleur(){
return $this->couleur;
}
public function getAnnee(){
return $this->annee;
}
public function getNbVehicules(){
return $this->nbVehicules+=1;
}
public function __toString(){
$message = "";
$message.= "Marque du vehicule: ".$this->marque." / Couleur du vehicule: ".$this->couleur." / Annee du vehicule: ".$this->annee;
return $message;
}
}
class Voiture extends Vehicule{
private $proprio;
function __construct($uneMarque, $uneCouleur, $uneAnnee, $unProprio){
parent::__construct($uneMarque, $uneCouleur, $uneAnnee);
$this->proprio=$unProprio;
}
function getProprio(){
return $this->proprio;
}
}
$vehicule1 = new Vehicule("Nissan", "Bleu", 2021);
echo "<p> Vehicule [".$vehicule1->getNbVehicules()."]</p>";
echo $vehicule1->__toString();
//
$vehicule2 = new Voiture("Honda", "Rouge", 2020, "Jean");
echo "<p> Vehicule [".$vehicule2->getNbVehicules()."]</p>";
echo $vehicule2->__toString();
echo " / Proprietaire: ".$vehicule2->getProprio();
?>
解决方案
每个Vehicule
都有自己的$nbVehicules
值,它被设置为0
并且永远不会被修改。所以基本上getNbVehicules()
是硬编码总是返回1
。
首先,将值设为static
与 的任何特定实例无关的单个计数Vehicule
,并将其初始化为0
:
private static $nbVehicules = 0;
然后,由于您希望它计算已创建实例的数量,请在构造函数中增加它,而不是在您阅读它的任何时候:
public function __construct($uneMarque, $uneCouleur, $uneAnnee){
$this->marque=$uneMarque;
$this->couleur=$uneCouleur;
$this->annee=$uneAnnee;
self::$my_static += 1;
}
然后有一个static
读取值的方法:
public static function getNbVehicules(){
return self::nbVehicules;
}
读取该值将是一个static
操作,与任何给定实例无关:
echo "<p> Vehicule [".Vehicule::getNbVehicules()."]</p>";
推荐阅读
- mysql - 如何将 MySQL 数据库从 AMPPS 转移到 XAMPP vm Stack
- javascript - 未捕获的类型错误:无法读取属性“值”
- colors - 在 Shopify 产品页面上显示一种颜色选项
- javascript - 需要检查登录用户名和密码,然后从以前的条目中获取数据
- arrays - 在 TypeScript 中用另一个嵌套数组对象从一个数组中查找并替换带有 id 的值
- c# - 获取匹配表达式的字典值计数的最佳方法是什么?
- c# - ASP.NET Core 5.0 OData $select 不工作
- jquery - jquery 验证复选框
- matlab - 多标签组合数据集 MATLAB 的训练、验证和测试中的混洗和分区
- python - 在 Flask 中使用块时遇到问题