[英]Access main class from another PHP class
早上好,我必须做以下练习,并且我有两个问题:
要创建车辆,我必须在主类中完成,如何通过getVehiclesCreatives()方法从车辆类中知道我创建了多少辆车?
当使用方法与车辆1一起行驶时,我们说“ 100公里”如何将其添加到车辆1的行驶里程中?
非常感谢你
创建一个具有类方法getVehiclesCreated()和getKmTotals()的Vehicle类。 以及getKmRecorridos()的方法。 通过至少执行以下操作的应用程序测试班级:-创建3辆汽车-与汽车一起行驶1-与汽车一起行驶2-与汽车一起行驶3-查看车辆行驶里程1-查看车辆行驶里程2-查看车辆行驶里程3 -查看车辆总里程
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
include ("./vehiculo.php");
$vehiculo1 = new vehiculo();
$vehiculo2 = new vehiculo();
$vehiculo3 = new vehiculo();
$vehiculo1 ->andar(100);
$vehiculo1 ->getKmRecorridos();
?>
车辆类
<?php
class vehiculo {
public static $vehiculosCreados = 0;
public static $kmTotales;
public $kmRecorridos;
function getVehiculosCreados() {
return $this->vehiculosCreados;
}
function getKmTotales() {
return $this->kmTotales;
}
function getKmRecorridos() {
return $this->kmRecorridos;
}
function setVehiculosCreados($vehiculosCreados) {
$this->vehiculosCreados = $vehiculosCreados;
}
function setKmTotales($kmTotales) {
$this->kmTotales = $kmTotales;
}
function setKmRecorridos($kmRecorridos) {
$this->kmRecorridos = $kmRecorridos;
static $kmTotales;
$this->kmTotales = $kmRecorridos + $kmTotales;
}
function andar($kms) {
$kmRecorridos = $kms + $kmRecorridos;
}
function crearVehiculo($vehiculosCreados) {
$this->$vehiculosCreados++;
}
}
为了获得实例化的类的数量,它们之间应该有一个共享变量。 您可以通过将$vehiculosCreados
声明为静态变量来完成此操作。 然后,您只需要在类的构造函数中增加此变量。
要更新行驶的公里数,您需要将$kmRecorridos
的值增加$kms
。 您将函数andar
的变量取反,应该是$kmRecorridos += $kms
。
要获得行驶的总公里数,您还需要将$kmTotales
声明为静态变量!
为了获得类的实例数,您需要做两件事:
__construct
方法中,将您的 vehiculosCreados
属性,同时引用self
而不是 this
。 vehiculosCreados
的静态函数 self
而不是this
属性。 有关更多信息,请参见此问题/答案。
class vehiculo {
public static $vehiculosCreados = 0;
public static $kmTotales;
public $kmRecorridos;
public function __construct() {
self::$vehiculosCreados++;
}
function getVehiculosCreados() {
return self::$vehiculosCreados;
}
..
}
您可以使用vehiculo::getVehiculosCreados()
获取类的总实例。
至于增加的行驶距离,您似乎有两个变量,一个用于跟踪特定汽车的距离,另一个用于跟踪所有汽车的距离? 要增加两者,我们可以在同一函数中完成:
public function andar($kms) {
$this->kmRecorridos += $kms;
self::$kmTotales += $this->kmRecorridos;
}
您可以使用vehiculo::$kmTotales
访问总计,并使用$vehiculo->getKmRecorridos()
访问特定汽车的距离。
self::$kmTotales
将跟踪您所有vehiculo
距离的实例,而kmRecorridos
将仅跟踪当前对象的行进距离。 不过,我可能会误解您想要什么,所以请告诉我它是否是!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.