PORTECTED PUBLIC PRIVATE

  • #1
$

$hizo

Aktives Mitglied
Themenersteller
Dabei seit
18.11.2005
Beiträge
40
Reaktionspunkte
0
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:

function get_title() {
$buch[isbn] = $this->isbn;
$buch[titel] = $this->titel;
$buch[autor] = $this->autor;
return($buch);
}
-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??

function set_isbn($isbn=false) {
if($isbn === false) return false;
return($this->isbn);
-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??

$book->insert_book_data($arr);
-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;
}

a beim name von der funktion steht ja get_title... gehört das get_ mit zum namen oder bewirkt das irgendetwas??

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.

-$this->isbn; ... das mti dem $this rall ich irgendwie net richtig

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.

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

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.

function get_book() {
$buch[isbn] = $this->isbn;
$buch[titel] = $this->titel;
$buch[autor] = $this->autor;
return($buch);
}

-beim return wird doch die funktion in der das return steht wieder ausgegeben, aber was macht das $buch dahinter??

$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^^

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.

:-[ 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* ???

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

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 ;)

oder hier wird es auch beschrieben:


$hizo schrieb:
ich glaub ich mach mehr fehler am tag als du haare aufm kopf hast

Sei dir da nicht so sicher @Haare :°

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

wird da dann nur das array ausgegeben? hintereinander??

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];
....
....
?>
 
Thema:

PORTECTED PUBLIC PRIVATE

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben