POO en PHP5
Résolu
Nadia
-
farzit -
farzit -
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
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
A voir également:
- POO en PHP5
- Happy poo - Télécharger - Arcade
13 réponses
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):
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); } }
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
LOL c'est bon apparement j'ai remarqué que j'était en 4.x
Comment faire pour passer à la version 5.x
Comment faire pour passer à la version 5.x
:-)
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).
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).
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.
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.