Question sur le partage de variables entre méthodes.
Bonjour à vous !
Voilà, je débute en programmation objet. Je programme un petit client en php, et évidement, j'envoie et reçois beaucoup de données.
Pour faire un truc un peu plus propre, je me suis dit que ce serai intéressant pour moi de me mettre à la programmation objet.
Voici le code de test d'appel aux méthodes de ma classe :
Code:
1 2 3 4
| $connexion = new Client;
$connexion->EnvoiRequete($envoi1);
$connexion->LireReponse($masquefindemessage);
$connexion->FermerConnexion() |
Et le code de ma classe version simplifiée car tout n'est pas interessant à y lire :
Code:
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
| <?php
class Client {
//On Créer une socket TCP/IP.
function Client() {
$texte = "";
$masquefinderéponse = "";
$port = "portduserveur";
$adresse = "Ipduserveur";
$reception = "";
if ($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>2, 'usec'=>0));
echo "<span class=\"avertissements\">Connexion à ".$adresse." sur le port ".$port."...</span><br />";
//On s'y connecte
if (!socket_connect($socket, $adresse, $port)) echo "Impossible de se connecter";
}
//Envoie de requête $texte sur le serveur
function EnvoiRequete($texte) {
echo "<span class=\"sortant\">Envoi de la requête : ".$texte." ...";actualiser();
if ($envoidonne = socket_write($socket, $texte, strlen($texte))){
echo "OK.</span><br />";actualiser();
} else echo "socket_write() a échoué : raison : (".$envoidonne.") " . socket_strerror($envoidonne) . "<br />";actualiser();
}
//Récéption de requêtes sur le serveur dont la fin de phrase est identifiée via $masquefinderéponse
function LireReponse($masquefinderéponse) {
echo "<span class=\"entrant\">Réponse : ";actualiser();
do {$reception = socket_read($socket, 2048);} while (preg_match($masquefinderéponse, $reception));
echo htmlspecialchars($reception, ENT_QUOTES)."</span><br />";actualiser();
}
//On ferme la connexion
function FermerConnexion() {
socket_close($socket);
echo "<span class=\"avertissements\">Socket Fermé.</span>";
}
}?> |
Je me suis permis de cacher l'IP et le port du serveur.
Néanmoins, voici le problème :
Citation:
"Notice: Undefined variable: socket in classes.php on line 36"
Les variables ne transitent pas entre les différentes méthodes.
Quelle est la solution à ce problème s'il vous plait ? Merci d'avance : :)