8768 sujets

Développement web côté serveur, CMS

Bonjour,
Je ne comprends pas comment instancier une classe héritée, je m'explique avec un exemple.
Classe principale : Bateau avec plusieurs attributs : Numéro, taille ...
Classe enfant : Vente avec prix de vente, marge ...

Voici mes codes :

<?php

	class bateau {

	     public $numBateau;
		  public $taille;
		  public $port;
		  public $adresseAnneau;
		 
		  
	// Définition du constructeur
	function __construct($numBateau,$taille,$port,$adresseAnneau) {


			$this->numBateau = $numBateau;
			$this->taille = $taille;
			$this->port = $port;
			$this->adresseAnneau = $adresseAnneau;
			
			}

		  
	      public function AfficherInfosBateau(){
			echo " Le numéro du bateau est : ",$this->numBateau."<br>";
	      echo " La taille du bateau est : ",$this->taille."<br>";
			echo " Le port est : ",$this->port."<br>";
			echo " L'adresse de l'anneau est : ",$this->adresseAnneau."<br>";	
				
	         }
   }



class vente extends bateau
   { // attribut

         public $prixVenteBateau;
         public $marge;
         public $taxeFrancisation;
         public $nomProprio;

      // création du constructeur propre à formateur (+ spe) 
      //héritée du construsteur de employe
      function __construct($numBateau,$taille,$port,$adresseAnneau,$prixVenteBateau,$marge, $taxeFrancisation, $nomProprio)
      
      {   
      // c'est ce niveau que se fait l'héritage
         parent::__construct($numBateau,$taille,$port,$adresseAnneau);
         
      // alimenter l'attribut spécialité de la classe formateur   
            $this->prixVenteBateau = $prixVenteBateau;
            $this->marge = $marge;
            $this->taxeFrancisation= $taxeFrancisation;
            $this->nomProprio = $nomProprio;
      }




Comment instancier et donc relier le bateau avec les informations de sa vente ?

Merci bien !
Simplement avec

$_vente = new Vente();

Et $_vente à hérités de bateau automatiquement vu que tu lui précise extends Bateau.
Modifié par JENCAL (02 Dec 2019 - 15:08)
Meilleure solution
D'accord mais je comprends pas un point ! Si j'instancie mon bateau comme tel :

$bat1=new bateau("1","15m","Port A","Ponton 1");


Comment est ce que je sais que les attributs que je vais instancier pour la vente seront associés à ce bateau ?

Merci de votre rapidité !
En faite, c'est plutôt Bateau qui devrait hérité de Vente.
Vente est accessible pas plusieurs "type" (bateau, voiture, etc... et c'est eux qui vont hériter des fonctions que propose la classe vente)