Suppression d'un objet d'une classe [Résolu]

Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
- - Dernière réponse : payetonju
Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
- 22 juil. 2010 à 09:13
Bonjour, j'ai un souci d'execution de programme. Le premier se situe à la ligne :
public var $element_panier = array();


le deuxieme se situe au niveau de la suppression de l'objet :
delete $Article;


class class_panier
{
  // Facilite l'acces complet au panier

  public var $element_panier = array();
 
  function addArticle( $CodeArticle, $qte )
  {
    if( ( $Article searchArticle( $_Article->getCode() ) ) NULL )
    {
      $element_panier[] = new class_article( $CodeArticle, $qte );
    } 
    else
    {
      $newqte = $Article->getQte() + $qte;
      if( $newqte > 0 )
      {
        // Controle des eventuelles erreurs de quantité dans le papier

        $Article->setQte( $Article->getQte() + $Qte );
      }
      else
      {
        $this->setArticle( $CodeArticle, 0 );
      }
    }
  }
 
  function setArticle( $CodeArticle, $qte )
  {
    if( ( $Article searchArticle( $_Article->getCode() ) ) NULL )
    {
      $element_panier[] = new class_article( $CodeArticle, $qte );
    } 
    else
    {
      if( $qte <= 0 )
      {
        $this->supArticle( $CodeArticle );
      }
      else
      {
        $Article->setQte( $qte );
      }
    }
  }

  function supArticle( $CodeArticle )
  {
    $tempPanier = array();
    foreach( $this->element_panier As $Article )
    {
      if( $Article->getCode() == $CodeArticle ) 
      {
        delete $Article;
      }
      else
      {
        $tempPanier[] = $Article;
      }
    }
    $this->element_panier = $tempPanier;
  }

  function searchArticle( $Code )
  {
    foreach( $this->element_panier As $Article )
    {
      if( $Article->getCode() == $Code ) return $Article;
    }
    return NULL;
  }
}


Aurais-je mal compris quelque chose ?
Merci

Ju
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
3
Merci
Il faut que tu fasses référence à l'instanciation de ton objet :
$this->searchArticle()


Cordialement,

Kohntark -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

Aurais-je mal compris quelque chose ?

C'est probable , mais afin de ne pas être contagieux il serait bien que tu précises les "soucis" : message d'erreur exact, etc ...

public var $element_panier = array();

Que vient donc faire var ici ??

delete $Article;

Qu'est ce que delete ???

J'ai comme l'impression que tu fais un mix javascript / PHP


Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
0
Merci
Bonjour Kohntark !
Je me mets à l'objet, j'ai bcp de mal :(

LE message d'erreur est le suivant :
Parse error: syntax error, unexpected T_VAR, expecting T_VARIABLE in C:\Programmes\wampserver2.0c\www\objet.php on line 6


Ensuite j'ai retiré le "var", et j'ai ceci comme erreur :
Parse error: syntax error, unexpected T_VARIABLE in C:\Programmes\wampserver2.0c\www\objet.php on line 56

C'est bien le delete qui fou la merde, j'ai remplacé par
Object::delete($Article);


MAis j'ai toujours une erreur :
Fatal error: Call to undefined function searchArticle() in C:\Programmes\wampserver2.0c\www\objet.php on line 10
alors qu'elle existe..

Voici ma class modifiée :

class class_panier
{
  public $element_panier = array();
 
  function addArticle( $CodeArticle, $qte )
  {
    if( ( $Article searchArticle( $_Article->getCode() ) ) NULL )
    {
      $element_panier[] = new class_article( $CodeArticle, $qte );
    } 
    else
    {
      $newqte = $Article->getQte() + $qte;
      if( $newqte > 0 )
      {
        $Article->setQte( $Article->getQte() + $Qte );
      }
      else
      {
        $this->setArticle( $CodeArticle, 0 );
      }
    }
  }
 
  function setArticle( $CodeArticle, $qte )
  {
    if( ( $Article searchArticle( $_Article->getCode() ) ) NULL )
    {
      $element_panier[] = new class_article( $CodeArticle, $qte );
    } 
    else
    {
      if( $qte <= 0 )
      {
        $this->supArticle( $CodeArticle );
      }
      else
      {
        $Article->setQte( $qte );
      }
    }
  }

  function supArticle( $CodeArticle )
  {
    $tempPanier = array();
    foreach( $this->element_panier As $Article )
    {
      if( $Article->getCode() == $CodeArticle ) 
      {
        Object::delete($Article);
      }
      else
      {
        $tempPanier[] = $Article;
      }
    }
    $this->element_panier = $tempPanier;
  }

  function searchArticle( $Code )
  {
    foreach( $this->element_panier As $Article )
    {
      if( $Article->getCode() == $Code ) return $Article;
    }
    return NULL;
  }
}


Comment ça se fait ?

MErci
Commenter la réponse de payetonju
Messages postés
437
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
0
Merci
ha oui c'etait exactement ça ! Trop fort !!!

Merciiii bonne journée :)
Commenter la réponse de payetonju