Rechercher : dans
Par :

POO en PHP5

Dernière réponse le 1 jui 2008 à 13:49:58 Nadia, le 20 fév 2008 à 20:11:35 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « POO en PHP5 » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
POO - Le polymorphisme VoirDéfinition du polymorphisme Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et...
POO - Encapsulation des données VoirLe concept d'encapsulation L'encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d'une structure en cachant l'implémentation de l'objet, c'est-à-dire en empêchant l'accès aux données par un autre moyen que les...
POO - Héritage VoirLa notion d'héritage L'héritage (en anglais inheritance) est un principe propre à la programmation orientée objet, permettant de créer une nouvelle classe à partir d'une classe existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation...

1

Nadia, le 20 fév 2008 à 21:48:11

Aller les amis svp aidez moi!!!

Répondre à Nadia

2

kilian, le 20 fév 2008 à 22:36:51

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);
    }
}

Répondre à kilian

3

Nadia, le 20 fév 2008 à 23:12:41

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

Répondre à Nadia

4

kilian, le 20 fév 2008 à 23:18:27

C'est la ligne ou il y a le public static truc?
Tu es sûr que tu as php 5?

Répondre à kilian

5

Nadia, le 20 fév 2008 à 23:20:14

Comment sait on kel version on utilise?

Répondre à Nadia

6

kilian, le 20 fév 2008 à 23:22:49
Répondre à kilian

7

Nadia, le 20 fév 2008 à 23:30:24

LOL c'est bon apparement j'ai remarqué que j'était en 4.x
Comment faire pour passer à la version 5.x

Répondre à Nadia

8

kilian, le 20 fév 2008 à 23:43:39

:-)

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).

Répondre à kilian

9

Nadia, le 21 fév 2008 à 11:04:03

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

Répondre à Nadia

10

Nadia, le 21 fév 2008 à 11:26:58

Svp aidez moi c'est vraiment galere tout ca.

Répondre à Nadia

11

Nadia, le 21 fév 2008 à 13:42:15

Ya vraimen personne qui peut m aider

Répondre à Nadia

12

Nadia, le 21 fév 2008 à 15:02:34

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.

Répondre à Nadia

13

 farzit, le 1 jui 2008 à 13:49:58

Je pense que le probleme provien qu'on ne peut pas déclarer un attribut et l'initialiser avec new

Répondre à farzit