• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP-Klassen

Status
Für weitere Antworten geschlossen.

Prophet

Super-Moderator
Moderator
Ich erstrelle mir gerade eine Klasse mit PHP. Da ich mich auch schon mit C++ beschäftigt habe wollte ich wissen ob die Schreibweisen die ich von dort kenne auch in PHP möglich sind.

Schreibweise die ich in PHP Benutze:
[php:1:a212b8cd97]<?php
class Klasse
{
var $variable1;
var $variable2;

function Klasse()
{ /*Konstruktor*/}

funktion Funktion1()
{}
}
?>[/php:1:a212b8cd97]

Fragen:

1. Kann ich die Funktionen wie in C++ auch ausserhalb der Klasse daklarieren:
Code:
class Klasse
{
    function Funktion1();
}

function Klasse::Funktion1()
{}

2. Gibt es in PHP-Klassen eine Unterscheidung zwischen Private und Public?

3. Warum benötigen Klassen-Variablen ein var?

MfG Prophet
 
Werbung:
ist schwer zu erklären. bei mir hat es mit sinn und verwendung auch erst vor ein paar tagen klick gemacht. ich finde sie plötzlich richtig nützlich.

zb:
[php:1:985b0bfbb4]<?php
class User
{
var $name;
var $email;
var $passwort;

function User($spalte, $wert)//konstruktor
{
$sql = "SELECT * FROM `user` WHERE `$spalte`='$wert' LIMIT 1;";
$result = mysql_query($sql);
$daten = mysql_fetch_array($result);

$this->$name = $daten['name'];
//...
}
}
?>[/php:1:985b0bfbb4]

verstehst du? du initialisierst solch ein objekt und hast alle daten + funktionen für den zugriff! nicht mehr 20 zeilen quelltext um den user und seinte daten zu holen! nein eine zeile mit objekt und schon hast du alle + funktionen die die sdaten noch dazu für dich aufbereiten.

also ich finde die dinger praktisch und werde es ab jetzt immer so machen!

mfg Prophet
 
Werbung:
aber du hast doch jetz das problem, dass du für die funktion keine daten hast, da die nur in der klasse edxistiert oder???
 
das würde jetzt im script so aus sehen:
[php:1:b6fb83ff12]<?php
User $Objekt = new User('name', 'bimbo'); // konstruktor aufruf zur initisalisierung
$Objekt->Funktion1();
$Objekt->Funktion2();
if($Objekt->$name == 'bimbo')
{
// ...
}
// ...
?>[/php:1:b6fb83ff12]

Verstehst?

So kannst du alles in die Klasse integrieren und dann kannst du nachher im script ohne 30 zeilen zu schreiben um die benutzter daten zu holen einfach ein belibiges objekt erstellen was alle daten enthält + die funktionen mit dennen du sie schnell und einfach verarbeitest...
Ich finde sogar man behält nen besseren überblick zumindest wenn man die namen der funktionen logicsch aufbaut man wei immer was mit wen gemacht wurde...

mfg Prophet
 
classen sin ja echt nützlich...
und bei der initialisierung muss man erst den var namen angeben und dann den namen den man für die var haben will??
also:
new User('name', 'bimbo');
und für die email dazu noch
new User('name', 'bimbo','email','max@mustermann');
hab ich das richtig verstanden
 
Werbung:
[php:1:65d9f477dc] function User($spalte, $wert)//konstruktor
{
$sql = "SELECT * FROM `user` WHERE `$spalte`='$wert' LIMIT 1;";
$result = mysql_query($sql);
$daten = mysql_fetch_array($result);

$this->$name = $daten['name'];
//...
} [/php:1:65d9f477dc]

hier das ist dir func.

und die beiden angaben dienen nur dazu damit die funktion weis wenn sie aus der db holen soll. also nach welcher $spalte mit welchem $wert.

im prinzig eine siuchangabe damit der richtige account geladen wird...

mfg Prophet
 
aber dann könnte man doch einfach 2 funktionen in einnander schreiben??? würde das nicht die selbe wirkung ahben?
 
Werbung:
Ich würde dir mal empfehlen bei PHP.net nachzusehen, da PHP 5 da starke verädnerungen hat. Der Konstruktor heißt dort, soweit ich weiß, __constructor, oder mit 3 Unterstrichen, oder sowas. PHP 4 hat das allerdings noch nciht, ich glaube da gibt es garkeine Konstruktoren. Musste man viel tricksen oder so, hab ich mal gelesen, als ich was über PHP 5 OOP erfahren wollte. Kann dir für PHP 5 vielleicht ein paar Links geben wenn ich sie in den Bookmarks finde
 
kann hier nicht mal jemand ein tipp thread zu klassen schreiben?
das würde mich auch interessieren, aber ich finde nirgens einen nützlichen beitrag zu klassen...
ich verwende nur funktionen...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben