[英]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.