IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] Interface en php


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut [POO] Interface en php
    Bonjour à tous,

    Avant de poster, j'ai essayé de comprendre avec les différents cours que j'ai pu trouver sur le net mais je n'ai toujours pas compris. Alors quelqu'un pourrais m'expliquer mon erreur, je vous mets le code plus bas

    Ce que j'essaie de faire c'est assez simple crée une page html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    interface ITemplate
    {
     
    	public function __construct($title, $keyword, $description);
    	public function addMenu($link, $url, $title, $class='');
    	public function addTitle($text, $level, $class='');
    	public function addParagraph ($text, $class='');
    	public function __destruct();
     
    }
     
    class Template implements ITemplate {
     
    	private $html;
     
    	public function __construct($title, $keyword, $description, $class=''){
     
    		$this->html = '<!DOCTYPE HTML PUBLIC "-W3C//DTD HTML 4.1 Transitional//FR" http://www.w3.org/TR/html4/loose.dtd"
    							<html>
    								<head>
    									<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1">
    									<meta description="'.$description.'">
    									<meta keyword="'.$keyword.'">
    									<link rel="stylesheet" type="text/css" href="'.$class.'">
    										<title>'.$title.'</title>
    								</head>
    									<body>';
     
    	}
     
    	public function addMenu($link, $url, $title, $class=''){
    		$error = '';
    		$arrayLink = array();
    		$arrayUrl = array();
     
    		$arrayLink = explode(',',$link);
    		$nbrLink = sizeof($arrayLink);
    		$arrayUrl = explode(',',$url);
    		$nbrUrl = sizeof($arrayUrl);
     
    		if ($nbrLink == $nbrUrl) {
    			$this->html .= '<ul class="'.$class.'">';
    							for($i=0;$i<$nbrLink;$i++)
    								$this->html .= '<li><a href="'.$arrayUrl[$i].'" title="'.$title.'">'.$arrayLink[$i].'</a></li>';
    		}else{
    			echo $error = '<SCRIPT LANGUAGE="JavaScript">
    							alert("Le nombre de liens n\'est pas identique aux nombre d\'url!");
    						  </SCRIPT>';
    		}
     
    	}
     
    	public function addTitle($text, $level, $class=''){
    		$this->html .= '<h'.$level.' class="'.$class.'">'.$text.'<h'.$level.'>';
    		return $this->html;
    	}
     
    	public function addParagraph ($text, $class=''){
    		$this->html .= '<p class="'.$class.'">'.$text.'</p>';
     
    	}
     
    	public function __destruct()
    	{
    		$this->html .='</body></html>';
     
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    include 'interface.class.php';
     
    $template = new Template('ma page', 'essai, essai, encore essai', 'construction à partir d\'interface'); //je passe les paramètres parce qu'il les demande (je ne comprends pas pourquoi...)
     
    echo $template->__construct('ma page', 'essai, essai, encore essai', 'construction à partir d\'interface');
    echo $template->addTitle('je suis curieux de voir comment ça marche',2,'p');
    echo $template->addParagraph('Lorunm macahis truc et bazard....');
    echo $template->__destruct();
    //le code ci-dessous c'est le code afficher dans ma page HTML et comme vous pouvez le voir, il n'affiche pas tous (addParagraph par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    <!DOCTYPE HTML PUBLIC "-W3C//DTD HTML 4.1 Transitional//FR" http://www.w3.org/TR/html4/loose.dtd"
    							<html>
    								<head>
    									<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1">
    									<meta description="construction à partir d'interface">
    									<meta keyword="essai, essai, encore essai">
    									<link rel="stylesheet" type="text/css" href="">
    										<title>ma page</title>
    								</head>
    									<body><h2 class="p">je suis curieux de voir comment ça marche<h2>
    Si quelqu'un pourrait me dire où sont mes erreurs, Si mon cas est plus grave que ça, lachez vous aussi ;-)

    Merci à vous,

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Il te manque un echo final ou un return dans ton destruct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    interface ITemplate
    {
     
    	public function __construct($title, $keyword, $description);
    	public function addMenu($link, $url, $title, $class='');
    	public function addTitle($text, $level, $class='');
    	public function addParagraph ($text, $class='');
    	public function __destruct();
     
    }
     
    class Template implements ITemplate {
     
    	private $html;
     
    	public function __construct($title, $keyword, $description, $class=''){
     
    		$this->html = '<!DOCTYPE HTML PUBLIC "-W3C//DTD HTML 4.1 Transitional//FR" http://www.w3.org/TR/html4/loose.dtd"
    							<html>
    								<head>
    									<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1">
    									<meta description="'.$description.'">
    									<meta keyword="'.$keyword.'">
    									<link rel="stylesheet" type="text/css" href="'.$class.'">
    										<title>'.$title.'</title>
    								</head>
    									<body>';
     
    	}
     
    	public function addMenu($link, $url, $title, $class=''){
    		$error = '';
    		$arrayLink = array();
    		$arrayUrl = array();
     
    		$arrayLink = explode(',',$link);
    		$nbrLink = sizeof($arrayLink);
    		$arrayUrl = explode(',',$url);
    		$nbrUrl = sizeof($arrayUrl);
     
    		if ($nbrLink == $nbrUrl) {
    			$this->html .= '<ul class="'.$class.'">';
    							for($i=0;$i<$nbrLink;$i++)
    								$this->html .= '<li><a href="'.$arrayUrl[$i].'" title="'.$title.'">'.$arrayLink[$i].'</a></li>';
    		}else{
    			echo $error = '<SCRIPT LANGUAGE="JavaScript">
    							alert("Le nombre de liens n\'est pas identique aux nombre d\'url!");
    						  </SCRIPT>';
    		}
     
    	}
     
    	public function addTitle($text, $level, $class=''){
    		$this->html .= '<h'.$level.' class="'.$class.'">'.$text.'<h'.$level.'>';
    		return $this->html;
    	}
     
    	public function addParagraph ($text, $class=''){
    		$this->html .= '<p class="'.$class.'">'.$text.'</p>';
     
    	}
     
    	public function __destruct()
    	{
    		$this->html .='</body></html>';
                    return $this -> html;
     
    	}
    }
    Ce qui te permettra d'ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    include 'interface.class.php';
     
    $template = new Template('ma page', 'essai, essai, encore essai', 'construction à partir d\'interface'); //je passe les paramètres parce qu'il les demande (je ne comprends pas pourquoi...)
     
    $template->addTitle('je suis curieux de voir comment ça marche',2,'p');
    $template->addParagraph('Lorunm macahis truc et bazard....');
    echo $template->__destruct();
    Neanmoins, ton utilisation de destruct n'est pas top, j'aurais plutot utilisé une méthod publish
    La method __destruct doit normalement etre appellé dans ce cas :
    C'est une méthod magic php qui n'a pas à etre appellé directement mais se déclencher sur un evenement

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Merci Phelim pour ta réponse.

    Qu'entends tu par publish ?
    Et tu pourrais dire si mon code est correct. Je me lance en php5 et je le découvre

    Encore merci

  4. #4
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    publish n'est qu'un nom pour une méthode. Elle ne sera pas du tout differente de ta methode __destruct que tu utilises

    Dans ton script, tu fais un appel direct aux méthode magic. Normalement, ce n'est pas trop prévu pour ce genre de chose. Ces methodes se déclenchent sur des evenements.

    La méthode __construct : creation de l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monObjet = new objet();
    Si ta methode _construct demande un string en parametre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monObjet = new objet("string");
    Pour la methode __destruct : destruction de l'objet (voir mon poste précédent)

    Il y'a plein de methodes magic differentes, je te renvoie au manuel de PHP pour ça

    Bon courage

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    MERCI !!!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] A quoi servent les interfaces en php ?
    Par eilijah dans le forum Langage
    Réponses: 6
    Dernier message: 07/11/2013, 12h16
  2. [POO] Interface et méthode abstraite en PHP5
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 24/04/2006, 00h54
  3. [POO] Site en PHP 5
    Par emstar dans le forum Langage
    Réponses: 8
    Dernier message: 11/04/2006, 14h36
  4. [POO] bug? de php
    Par XtofRoland dans le forum Langage
    Réponses: 11
    Dernier message: 21/02/2006, 14h54
  5. [POO] Question class php=>javascript
    Par jeff_! dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo