簡體   English   中英

從另一個PHP類訪問主類

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM