Posez votre question Signaler

POO en PHP5 [Résolu]

Nadia - Dernière réponse le 1 juil. 2008 à 13:49
Bonjour,
Je dois mettre en place un service web catalogue que voici:
import java.util.Hashtable;
/**
* Simple classe java qui fera office de service web ...
*/
public class ServiceCatalogue{
private Hashtable catalogue;
public ServiceCatalogue(){
catalogue = new Hashtable();
catalogue.put("java", "Sun Microsystem");
catalogue.put("eclipse", "Open Source");
catalogue.put("dotnet", "Microsoft");
catalogue.put("websphere", "IBM");
catalogue.put("WebLogic", "BEA");
catalogue.put("Langage C", "Borland");
}
public void supprimerLivre(String titre){
if (titre == null){
throw new IllegalArgumentException("Le titre doit etre renseigne.");
}
catalogue.remove(titre);
}
public void ajouterLivre(String titre, String auteur){
if ((titre == null) || (auteur == null)){
throw new IllegalArgumentException("Le titre et le nom de l'auteur doivent être renseignes.");
}
catalogue.put(titre,auteur);
}
public String trouverAuteur(String titre){
if (titre == null){
throw new IllegalArgumentException("Le titre doit etre renseigne.");
}
// Retourne l'auteur correspondant à la clé titre
return (String)catalogue.get(titre);
}
public Hashtable lister(){
return catalogue;
}
}

ce que j'ai fait en utilisant axis.
Et je dois ensuite mettre en place un service client sous nuSOAP. Pour cela, j'ai créé deux fichiers php:
ClientCatalogue.php
<?php
include('C:\Program Files\EasyPHP1-8\www\Client NuSOAP\nusoap-0.7.3\lib\nusoap.php');
//$client = new soapclient('http://localhost:8080/axis/ServiceCatalogue.jws');
class catalogue{
function lister(){
$client = new soapclient('http://localhost:8080/axis/ServiceCatalogue.jws');
$resultat = $client->call('lister');
print_r($resultat);
}
function supprimerLivre($titre){
$param = array('titre'=>$titre);
return $resultat = $client->call('supprimerLivre',$param);
}
function ajouterLivre($titre, $auteur){
$param = array('titre'=>$titre,'auteur'=>$auteur);
$resultat = $client->call('ajouterLivre',$param);
}
function trouverAuteur($titre){
$param = array('titre'=>$titre);
return $resultat = $client->call('trouverAuteur',$param);
}
}
?>

et indexCatalogue.php
<?php
require('ClientCatalogue.php');
$catalogue= new catalogue();
$catalogue->lister();
?>

C'est là que se pose mon problème.
En fait je fais le test juste pour la méthode lister(). Et ça marche. Le hic c'est que la variable $client je ne veux l'intancié qu'une seule fois et si je le fais comme vous le voyez au debut du fichier ClientCatalogue.php ben ca me genere une erreur.
Alors je me demande si vous avez une idée de la marche à suivre. Merci
Lire la suite 

POO en PHP5 »

13 réponses
Réponse
+1
moins plus
Salut,

Déclare cette variable comme étant un membre de ta classe catalogue puis tu l'initialises lors de sa déclaration dans la classe. Et si tu veux qu'il n'y ait jamais qu'une seule et même instanciation de client même si tu instancies plusieurs objets catalogue, tu peux déclarer ton client comme étant statique (il appartient à la classe et non pas à l'objet):
class catalogue
{
    public static $client = new soapclient('http://localhost:8080/axis/ServiceCatalogue.jws');

    function lister()
    {
        $resultat = self::$client->call('lister');
        print_r($resultat);
    }
}

Ajouter un commentaire
Réponse
+1
moins plus
je pense que le probleme provien qu'on ne peut pas déclarer un attribut et l'initialiser avec new
Ajouter un commentaire
Réponse
+0
moins plus
Salut a tous,
Merci pour votre aide à tous. J'ai réussi à passé en php5. J'ai fait des modification. Donc voila mon fichier ClientCatalogue.php:

<?php

include('C:\Program Files\EasyPHP1-8\www\Client NuSOAP\nusoap-0.7.3\lib\nusoap.php');


class catalogue{

public static $client = new soapclient('http://localhost:8080/axis/ServiceCatalogue.jws');

function lister(){
$resultat = self::$client->call('lister');
print_r($resultat);
}

function supprimerLivre($titre){
$param = array('titre'=>$titre);
return $resultat = $client->call('supprimerLivre',$param);
}

function ajouterLivre($titre, $auteur){
$param = array('titre'=>$titre,'auteur'=>$auteur);
$resultat = $client->call('ajouterLivre',$param);
}

function trouverAuteur($titre){
$param = array('titre'=>$titre);
return $resultat = $client->call('trouverAuteur',$param);
}
}
?>


Quand j'execute le fichier, j'ai l'erreur suivante:
Parse error: syntax error, unexpected T_NEW in C:\wamp\www\Client NuSOAP\ClientCatalogue.php on line 8
Ajouter un commentaire
Réponse
-1
moins plus
Aller les amis svp aidez moi!!!
Ajouter un commentaire
Réponse
-1
moins plus
Ok c'est bien ce que j'ai fait mais ca me genere l'erreur suivante:
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\client nusoap\ClientCatalogue.php on line 7
Ajouter un commentaire
Réponse
-1
moins plus
C'est la ligne ou il y a le public static truc?
Tu es sûr que tu as php 5?
Ajouter un commentaire
Réponse
-1
moins plus
Comment sait on kel version on utilise?
Ajouter un commentaire
Réponse
-1
moins plus
Avec cette fonction:
http://fr3.php.net/manual/fr/function.phpversion.php
Ajouter un commentaire
Réponse
-1
moins plus
LOL c'est bon apparement j'ai remarqué que j'était en 4.x
Comment faire pour passer à la version 5.x
Ajouter un commentaire
Réponse
-1
moins plus
:-)

Ben ça dépend de ce que tu utilises en ce moment. Si tu utilise un paquetage comme wamp ou easyphp (la il faut installer la dernière version), ou si tu utilises apache/php individuellement (là il faut réinstaller une version 5 de php et éventuellement retoucher la config d'apache).
Ajouter un commentaire
Réponse
-1
moins plus
Svp aidez moi c'est vraiment galere tout ca.
Ajouter un commentaire
Réponse
-1
moins plus
ya vraimen personne qui peut m aider
Ajouter un commentaire
Réponse
-1
moins plus
salut à tous,
alors voilà j'ai réussi à régler le problème grâce à l'aide d'un ami sans qui j'aurais rien compris :)
Donc voilà:
On crée notre dossier client dans le dossier www de notre serveur (par exemple WampServeur).
Dans le dossier client, on y place le dossier de nusoap et toujours dans client, on crée un fichier catalogue.php qui contiendra notre classe catalogue.

Fichier catalogue.php

<?php>
include("./nusoap-0.7.3/lib/nusoap.php");
class Catalogue{
var $client;
function __construct(){ // Déclaration de notre constructeur
echo "Constructeur";
$this->client=new soapclient('http://localhost:8080/axis/ServiceCatalogue.jws');
}
function lister(){ // Appel de la méthode lister de notre ServiceCatalogue.jws
$resultat=$this->client->call('lister');
print_r($resultat);
}
}
<php>


Toujours dans le dossier client, on y ajoute le fichier index.php suivant:

<?php
include("ClientCatalogue.php");

$catalogue = new ClientCatalogue(); // On instancie la classe catalogue
$catalogue->lister(); // et on appel la fonction
?>


Conclusion: probleme résolu.
Merci à tous.
Ajouter un commentaire
Ce document intitulé « POO en PHP5 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook