j'ai une class voiture, et j'essaye dans une class garage d'accéder via la fonction most aux attribut de voiture, via paramètre. C'est pas très clair désolé, mais en gros c'est la ligne "$mostDonnée = $element->$donnée;" qui me pose problème. Je sais que'elle n'est pas correcte mais c'est montrer ce que je veux faire !
Si quelqu'un veut bien m'aider ce serait cool
class voiture{
public $marque;
public $motorisation;
public $modèle;
public $yearCirculation;
public $kilometrage;
public $prix;
public function __construct(
string $marque,
string $motorisation,
string $modèle,
int $yearCirculation,
float $kilometrage,
float $prix
){
$this->marque = $marque;
$this->motorisation = $motorisation;
$this->modèle = $modèle;
$this->yearCirculation = $yearCirculation;
$this->kilometrage = $kilometrage;
$this->prix = $prix;
}
}
public function most($donnée, $attribut)
{
$mostDonnée = -999999;
foreach($this->cars as $element){
if ($element->$donnée > $mostDonnée){
$mostDonnée = $element->$donnée;
$mostDonnéeCar = $element;
}
}
$attribut = $mostDonnéeCar;
}
Pour ta question en fait il faut utiliser de l'accès dynamique (comme tu as fait d'aileurs dans ton code après relecture) mais pour le coup je ne vois pas l'intérêt de ta méthode most. En tout cas voici comment c'est en essayant d'être plus "propre" :
<?php
class Car
{
private $mark;
private $model;
public function __construct(string $mark, string $model)
{
$this->mark = $mark;
$this->model = $model;
}
public function getMark(): string
{
return $this->mark;
}
public function setMark(string $mark): void
{
$this->mark = $mark;
}
public function getModel(): string
{
return $this->model;
}
public function setModel(string $model): void
{
$this->model = $model;
}
}
class Garage
{
/** @var Car[] $cars */
private $cars = [];
public function add(Car $car): void
{
$this->cars[] = $car;
}
public function most($data, $attribute): void
{
$setter = 'set'.ucfirst($attribute);
foreach ($this->cars as $car) {
if (method_exists($car, $setter)) {
$car->{$setter}($data);
}
}
}
}
J'utilise les nouveautés de php 7 vu que de toute façon on est sensé être en php version 7.2 minimum
En faite j'ai pas mis ma class garage entière, le truc c'est que je dois trouver, la voiture qui a le plus grand prix, année de mise en circularisation etc... du coup au lieu de faire 5-6 fonction semblables je préfère en faire une
Merci en tout cas je check ça
modif :
Bon j'ai regardé vite fais mais j'ai pas trop compris ce que t'as voulu faire, en gros je veux une méthode qui fait comme celle là, mais avec un paramètre à la place de "kilometrage":
public function mostKilometrage() : void
{
$mostK = 0;
foreach($this->cars as $car){
if ($car->kilometrage > $mostkilometrage){
$mostkilometrage = $car->kilometrage;
$mostkilometrageCar = $element;
}
}
$this->mostkilometrage = $mostkilometrageCar;
}
mas j'arrive pas à intégré ma variable $data après $car->
- Edité par Elfepee8031 23 janvier 2020 à 13:40:56
accéder à l'attribut d'une class dans une fonction
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL