socket class problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • socket class problem

    hi leute,
    code gerade eine socket klasse, sieht so aus
    Code:
    <?php
    error_reporting(0);
    
    class socket{
        private $socketServerAddress;
        private $socketServerPort;
        private $socketSocketHandler;
        
        public function __construct($serverAddress, $serverPort){
            $this->setInternalVariable('socketServerAddress', $serverAddress);
            $this->setInternalVariable('socketServerPort', $serverPort);
        }
        
        public function __destruct(){
        }
        
        public function setInternalVariable($variable, $value){
            $this->$variable = $value;
        }
        
        public function errorGetLast(){
            return error_get_last();
        }
        
        private function formatError($errorCode){
            $errorTable = array(
                '1'        =>     'E_ERROR',
                '2'        =>        'E_WARNING',
                '4'        =>        'E_PARSE',
                '8'        =>        'E_NOTICE',
                '16'        =>        'E_CORE_ERROR',
                '32'        =>        'E_CORE_WARNING',
                '64'        =>        'E_COMPILE_ERROR',
                '128'        =>        'E_COMPILE_WARNING',
                '256'        =>        'E_USER_ERROR',
                '512'        =>        'E_USER_WARNING',
                '1024'    =>        'E_USER_NOTICE',
                '2048'    =>        'E_STRICT',
                '4096'    =>        'E_RECOVERABLE_ERROR',
                '8192'    =>        'E_DEPRECATED',
                '16384'    =>        'E_USER_DEPRECATED',
                '30719'    =>        'E_ALL',
            );    
            return $errorTable[$errorCode];    
        }
        
        public function shutdownProcess($errorArrayFormat){
            printf("%s In %s on Line %d \n%s \n", $this->formatError($errorArrayFormat['type']), $errorArrayFormat['file'], $errorArrayFormat['line'], $errorArrayFormat['message']);
        }
        
        public function createSocket(){
            $this->socketSocketHandler = socket_create(AF_INET, SOCK_STREAM, 0) || die ($this->shutdownProcess($this->errorGetLast()));
        }
        
        public function bindSocket(){
            socket_bind($this->socketSocketHandler, $this->socketServerAddress, $this->socketServerPort) || die ($this->shutdownProcess($this->errorGetLast()));
        }        
    }
    
    $object= new socket('xxxxx','xxx');
    $object->createSocket(); 
    $object->bindSocket();
    das Problem ist hier nur, dass
    er mir sagt dass socket_bind() expects parameter 1 to be resource, boolean given

    ABER die ressource wurde doch korrekt gesetzt?

    danke euch!

    es liegt offensichtlich an dem || DIE
    || DIE geht nicht
    nur OR

    wieso das denn????
    Zuletzt geändert von maxi123; 14.06.2011, 16:52.

  • #2
    Eine Klasse sollte gar kein die() machen. die() ist böse.

    Du solltest deinen Code so formatieren, dass man nicht 2 Meter nach rechts scrollen muss, um ihn zu lesen.

    Kommentar


    • #3
      sehe ich sehr anders, tut aber eigentlich auch nichts zur sache
      ausserdem muss ich hier gar nicht scrollen.

      Kommentar


      • #4
        Hallo,

        h3ll sagte es schon, dass du gar nicht mit die() arbeiten solltest, aber zu deiner Frage:

        || und or sind in PHP nicht das gleiche und daher auch nicht gegenseitig austauschbar. Die beiden Operatoren besitzen eine unterschiedliche Rangfolge, was syntaktische Unterschiede mit sich bringt und haben auch unterschiedliche Rückgabewerte.

        Edit: Was das Scrollen angeht: wenn dein Bildschirm groß genug ist – schön für dich. Denk aber bitte auch an die anderen. In den Forenregeln steht übrigens auch, dass eine Zeilenlänge von 100 Zeichen eingehalten werden soll.

        Gruß,

        Amica
        Zuletzt geändert von AmicaNoctis; 14.06.2011, 17:08.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Zitat von maxi123 Beitrag anzeigen
          sehe ich sehr anders, tut aber eigentlich auch nichts zur sache
          Richtig. Was du siehst, ist hier egal. Es ist jedenfalls falsch und gehört korrigiert.

          Zitat von maxi123 Beitrag anzeigen
          ausserdem muss ich hier gar nicht scrollen.
          Schön für dich, aber davon hab ich nichts. Wenn man sich nicht auf einen anderen Standard geeinigt hat, sollte eine Codezeile niemals länger als 80 Zeichen sein. Dies ist also in einem öffentlichen Forum, wo jeder Zugang hat, das absolut erlaubte Maximum. Willst du nicht, dass andere Leute deinen Code lesen können, dann poste nicht in einem öffentlichen Forum.

          Kommentar


          • #6
            haste mir da nen link oder ne erklärung zu?
            bisher dachte ich AND => &&
            or => ||

            danke!

            Kommentar


            • #7
              Zitat von maxi123 Beitrag anzeigen
              haste mir da nen link oder ne erklärung zu?
              http://www.php.net/manual/de/language.operators.php
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                PHP: Logische Operatoren - Manual sagt

                eigentlich dasselbe zu || und or?

                Kommentar


                • #9
                  Brichst du jetzt bitte den Code um!?! (mit dem -Button)

                  Klar, es ist beides ein logisches oder, aber:
                  PHP-Code:
                  // Das Ergebnis des Ausdrucks (false || true) wird $e zugewiesen
                  // Funktioniert wie: ($e = (false || true))
                  $e false || true;

                  // Die Konstante "false" wird $f zugewiesen und danach wird true ignoriert
                  // Funktioniert wie: (($e = false) or true)
                  $f false or true
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar

                  Lädt...
                  X