PORTECTED PUBLIC PRIVATE

Dieses Thema PORTECTED PUBLIC PRIVATE im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von $hizo, 7. Dez. 2005.

Thema: PORTECTED PUBLIC PRIVATE Hi ich hab mir son buch gekauft für php5 und mysql 4 und da steht , dass wenn man eine Klasse eröffnet seine...

  1. Hi ich hab mir son buch gekauft für php5 und mysql 4
    und da steht , dass wenn man eine Klasse eröffnet seine Avriablen mit PUBLIC PRIVATE und PROTECTED beschränken kann... also bei PRIVATE z.b. kann man die Variable NUR in der Klasse benutzen, auch nicht in funktionen in der klasse...
    ist alles ja ganz schön und gut aber wenn ich da son vorgefertigtes script ausprobieren will, sagt mir der internetexplorer, dass an der zeile wo das PRIVATE bei mir steht eine undefinierte variable ist...

    was lügt jetzt das buch oder der explorer?? oder ist das vllt für mysql5.x ??
    bzw gibt es da auch andere möglichkeiten die Variablen nur zu beschränken?

    greez Timmäähh

    edit: achja und wenn ich das PRIVATE da dann weg machen und mit var ersetze klappt das...
     
  2. Hi,

    der IE und mySQL 5 hat damit nix zu tun :)
    Vermute eher das auf dem Server wo du das Script ausführen willst kein PHP 5 sondern es nur 4 gibt?

    Lädst du das Script irgendwo hoch, oder hast du nen lokalen Server installiert?
     
  3. Zum Verständniss:

    Code:
    <?php
    class BUCH {
    	private $isbn		= false;
    	private $titel	= false;
    	private $autor	= false;
    	
    	/**
    	* Daten für ein Buch setzen
    	*/
    	function insert_book_data($arr = false) {
    		if($arr === false) return false;
    		$this->isbn = $arr[isbn];
    		$this->titel = $arr[titel];
    		$this->autor = $arr[autor];
    	}
    	/**
    	* Buchdaten holen
    	*/
    	function get_book() {
    		$buch[isbn] = $this->isbn;
    		$buch[titel] = $this->titel;
    		$buch[autor] = $this->autor;
    		return($buch);
    	}
    	/**
    	* Titel holen
    	*/
    	function get_titel() {
    		return($this->titel);
    	}
    	/**
    	* Titel setzen
    	*/
    	function set_titel($titel=false) {
    		if($titel === false) return false;	
    		$this->titel = $titel;
    	}
    	/**
    	* ISBN holen
    	*/
    	function get_isbn() {
    		return($this->isbn);
    	}
    	/**
    	* ISBN setzen
    	*/
    	function set_isbn($isbn=false) {
    		if($isbn === false) return false;
    		$this->isbn= $isbn;
    	}
    	/**
    	* Autor holen
    	*/
    	function get_autor() {
    		return($this->autor);
    	}
    	/**
    	* Autor setzen 
    	*/
    	function set_autor($auto=false) {
    		if($autor === false) return false;
    		$this->autor = $autor;
    	}
    }
    
    # Neue Instanz der Klasse BUCH
    $book = new BUCH;
    
    /**
    * Buchdaten direkt eingeben.
    * Geht nicht, da die Parameter als PRIVATE deklariert sind.
    * Fatal error: Cannot access private property BUCH::$isbn
    $book->isbn = 123456;
    $book->titel = ES;
    $book->autor = Stephen King;
    */
    
    /**
    * Also, die Buchdaten müssen über die Funktion insert eingegeben werden
    */
    $arr = array(isbn => 123456, titel => ES, autor => Stephen King);
    $book->insert_book_data($arr);
    
    /**
    * Buchdaten direkt holen.
    * Geht nicht, da die Parameter als PRIVATE deklariert sind.
    * Fatal error: Cannot access private property BUCH::$isbn
    echo $book->isbn.<br />;
    echo $book->titel.<br />;
    echo $book->autor.<br />;
    */
    
    /**
    * Also, die Buchdaten müssen über die Funktionen get_ ... geholt werden
    */
    echo $book->get_isbn().<br />;
    echo $book->get_titel().<br />;
    echo $book->get_autor().<hr />;
    
    /**
    * Die Buchdaten können allerdings auch über die Funktion set_ ... gesetzt werden
    */
    $book->set_isbn(456789);
    $book->set_titel(SIE);
    echo $book->get_isbn().<br />;
    echo $book->get_titel().<br />;
    echo $book->get_autor().<hr />;
    ?>
    
     
  4. hast recht leigt an php4 ... ich lad die sachen immer hoch :) , damit ich direkt sehen kann ob das auch auf dem server klappt...

    kann mir evtl auch jemand erklären wie das mit den klassen genau ist? also ich frag einfach mal was ich nciht weiss, bzw nicht verstehe:

    -da beim name von der funktion steht ja get_title... gehört das get_ mit zum namen oder bewirkt das irgendetwas??
    -$this->isbn;  ... das mti dem $this rall ich irgendwie net richtig... kann das jemand vllt einfach nochmal für mich erklären??
    -beim return wird doch die funktion in der das return steht wieder ausgegeben, aber was macht das $buch dahinter??

    -da ist ja auch dieses set_ ...
    - === was bedeuten 3 gleichhaltszeichen??
    -return false... ist das das gleiche wie die() ??
    -beim namen oben steht ja auch in klammern ($isbn=false)... wird bei der funktion dann gleich isbn als false definiert??? weil wenn ja ist die if bedingung dahinter doch fast sinnlos denn isbn ist ja sowieso false??

    -ist das insert_ ne funktion? oder ist das nur zur orientierung an dem namen dran??

    :-[tut mir nochmal echt leid wenn ich so viel frage nur ich muss das wissen ;D , weil so mach ich mir doch einiges leichter beim proggen denke ich...

    danke für die hilfe  :)
    greez timmäähh
     
  5. Code:
    function set_isbn($isbn=false) {
       if($isbn === false) return false;
       return($this->isbn);
    }
    
    Das war ein Fehler, richtig ist es so:

    Code:
    function set_isbn($isbn=false) {
       if($isbn === false) return false;
       $this->isbn = $isbn;
    }
    
    Das get_ könnte auch Karl_hugo heißen ;)
    Ist einfach nur der Name der Funktion. Und da es eine Funktion ist, bei der was GEHOLT wird hab ich ein get_ vorangestellt.

    Das Schlüsselwort $this wird innerhalb von Objekten als Zeiger auf sich selbst verwendet. Damit PHP erkennen kann, ob ein Funktionsaufruf oder Variable dem Objekt selbst oder etwas außerhalb gelten muss diesen das Schlüsselwort $this vorangestellt werden.

    Is nur ein Funktionsname => insert = Einfügen
    Nach Möglichkeit sollten Funktionen immer sprechende Name haben damit man schon am Funktionsnamen erkennen kann was die Funktion macht/machen soll.

    $buch ist ein array mit den Buchdaten und wird über RETURN($buch) zurückgegeben.


    PS, im Bsp. waren 2 Fehler, die sind inzwischen korrigiert.
    Is was anderes, wenn man sowas hier direkt schreibt oder im richtigen Editor ;)
     
  6. egal fehler sind nicht schlimm^^ ich glaub ich mach mehr fehler am tag als du haare aufm kopf hast ich bin dir voll dankbar dass du mir überhaupt hilfst^^

    :-[ nich bös sein :-\ aaber... was ist ein objekt?? nur ein beispiel, dann kann ich mich dran orientieren... also ich denk ein objekt ist ne variable oder so, richtig?? *g* ???

    wird da dann nur das array ausgegeben? hintereinander??
     
  7. Jo, so langsam sollte ich wohl mal auf das PHP-Manual verweisen, da wird das alles beschrieben ;)
    http://www.php.net/manual/de/langref.php
    oder hier wird es auch beschrieben:
    http://www.html-world.de/program/php_7.php

    Sei dir da nicht so sicher @Haare :°

    Wie gesagt, in dem array $buch sind nun die Buchdaten, diese kannst du nun, wie bei jedem anderen Array auch, abfragen:

    Code:
    <?php
    $buch = $book->get_book();
    
    echo $buch[0]; 
    // Ist das gleiche wie 
    echo $buch[isbn];
    ....
    ....
    ?>
    
     
Die Seite wird geladen...

PORTECTED PUBLIC PRIVATE - Ähnliche Themen

Forum Datum
Zugang zu Public WLAN beim Segeln Windows XP Forum 10. Aug. 2010
Probleme mit Public Outlook 1.2 und Office 2003 Windows XP Forum 14. März 2005
public sync tool Windows XP Forum 23. Apr. 2004