[PHP] oop

sergey

Stammgast
Hey @ all

Wieder mal ein Problem von meiner Seite.

Also folgendes. Ich habe eine Klasse geschrieben, in der ich den Seiteninhalt aus der Datenbank (oder eben Tabelle) hole. Soweit so gut.

Die Klasse jedoch verwendet einen verweis auf eine andere (MySQL-Klasse), denn ich jedoch nicht ausführen kann.

Hier ein kurzes Codebeispiel:

PHP:
public function sqlQuery($query, $file)
    {
        $sql = mysql_query($query);
        if (!$sql)
        {
            //FIX ME -> Error Handling
            return FALSE;
        }
        else
        {
            return $sql;
        }
    }
Funktion sqlQuery in der Klasse database.

PHP:
public function getPage()
    {
        $sql = $db -> sqlQuery("SELECT * FROM page WHERE parentid = '".self::$pageSel['par']."' AND short = '".self::$pageSel['short']."'", 'page-class');
        if (!sql)
        {
            exit;
        }
        else
        {
Ausschnitt aus der Funktion getPage in der Klasse page

Jetzt zu meiner Frage. Wie kann ich von einer Klasse in die andere einen 'Verweis' machen? Sollte doch irgendwie möglich sein oder?

Gruss

sergey
 

romansvillage

Stammgast
Jetzt zu meiner Frage. Wie kann ich von einer Klasse in die andere einen 'Verweis' machen? Sollte doch irgendwie möglich sein oder?

Indem du das Klassenobjekt der einen Klasse der anderen Klasse übergibst.

Also etwa so:
Code:
$obj1 = new MyClass1($param1, $param2);
$obj2 = new MyClass2($obj1, $param);

In der "MyClass2" kannst du $obj1 nun gebrauchen um Funktionsaufrufe auf "MyClass1" zu machen.
 

yannis00

Stammgast
Hallo,

Ich verstehe nicht ganz was du mit Verweis meinst. Kannst du dein Problem bitte noch mal erklären. Was funktioniert und was nicht? Oder was möchtest du genau machen. Ich verstehs nicht so


Und falls du schon mit OOP arbeitest könntest du in zukunft mysqli
 

sergey

Stammgast
@romansvillage:

Wenn ich jetzt in der Klasse selbst damit arbeiten möchte, und den Aufruf nicht ausserhalb der Klassen machen möchte? Einfach in der entsprechenden Datei einen Aufruf einfügen?

@yannis00:

Ich denke das Problem sollte genau genug erklärt sein. Es funktioniert nicht das ich von einer Klasse auf eine andere zugreifen kann. Und das direkt aus der Klasse heraus.

Das mit dem MySQL lass mal meine Sorge sein. ;)

Gruss

sergey
 

romansvillage

Stammgast
@romansvillage:

Wenn ich jetzt in der Klasse selbst damit arbeiten möchte, und den Aufruf nicht ausserhalb der Klassen machen möchte? Einfach in der entsprechenden Datei einen Aufruf einfügen?

Wenn ich dich richtig verstehe willst du sowas:

Datei: myClass1.php
PHP:
class MyClass1 {
    public function myMethod1() {
        // Etwas tun
    }
}
Datei: myClass2.php
PHP:
include "myClass1.php";

class MyClass2 {
    public function myMethod2() {
        $myObj1 = new MyClass1();
        $myObj1->myMethod1();
    }
}
 

sergey

Stammgast
Ich konnte das Problem schliesslich und endlich doch noch beheben.

Folgendermassen habe ich jetzt die andere Klasse 'eingebunden':

PHP:
public function __construct($par, $short) {
        self::$pageSel['par'] = $par;
        self::$pageSel['short'] = $short;
        
        $this -> db = new database('user', 'pass', 'base');
        $this -> output();
    }
Konstruktor der Klasse page (Datei page.class.php)

PHP:
public function getPage() {
        $sql = database::sqlQuery("SELECT *
Ausschnitt aus der Funktion getPage der Klasse page

Den include habe ich in einer Testdatei gemacht, weil ich sowieso Datenbankanbindung benötige.

Danke für eure Hilfe.

Gruss

sergey
 
Oben