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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
<?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 :

"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 :