从另一个PHP类访问主类

时间:2018-02-16 13:01:27

标签: php

早上好,我必须做以下练习,我有几个问题:

要创建车辆,我必须在主类中进行,我如何从车辆类中了解getVehiclesCreatives()方法我创建了多少辆车?

使用方法时,请使用vehicle1让我们说“100km”如何将其添加到车辆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();




?>

Class vehiculo

<?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++;
}

}

2 个答案:

答案 0 :(得分:0)

要获取实例化的类数,您应该在所有类之间拥有共享变量。您可以通过将$vehiculosCreados声明为静态变量来执行此操作。然后,您只需要在类的构造函数中增加此变量。

要更新行驶公里数,您需要将$kmRecorridos的值增加$kms。您在函数andar中反转了变量,它应该是$kmRecorridos += $kms

要获得行驶公里总数,您还需要将$kmTotales声明为静态变量!

答案 1 :(得分:0)

为了获得课程实例的数量,你需要做两件事:

  • 在您班级__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; } .. }
  • 的属性

有关详细信息,请参阅this问题/答案。

vehiculo::getVehiculosCreados()

您可以使用public function andar($kms) { $this->kmRecorridos += $kms; self::$kmTotales += $this->kmRecorridos; }

获取班级的总实例数

至于增加您前往的距离,您似乎有两个变量,一个用于跟踪特定车辆的距离,另一个用于跟踪所有车辆的距离?要增加两者,我们可以在同一个函数中执行:

vehiculo::$kmTotales

您可以使用$vehiculo->getKmRecorridos()self::$kmTotales与特定车辆的距离访问总计。

vehiculo将跟踪kmRecorridos距离的所有实例,而List<ChartGroups>()将仅跟踪当前对象的行进距离。不过,我可能会误解你想要的东西,所以请告诉我它是不是!