Announcement

Collapse
No announcement yet.

Classen Attribute und include

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Classen Attribute und include

    Hi,

    Ich versuche mich gerade mal mit der Syntax von PHP auseinander zu setzten und hab folgendes vor:

    1. Klassen in eigene Dateien Auslagern
    2. in anderen Klassen Objekt-Attribute erstellen aus anderen Klassen

    ....

    eigentlich garned so viel... dachte ich zumind.

    Ich hab mir also meine Klasse geschrieben... gespeichert also klasseA.php und wollte nun in klasseB.php ein Attribute erstellen aus meiner klasseA...

    quellcode(klasseb.php)

    Code:
    include("klasseA.php");
    
    class klasseB{
    
    $meinAttribut;
    
    function klasseB()   //konstruktor
    {
          $meinAttribut = new klasseA();   //"new Anweisung" konnte ich weiter oben garnicht erst machen, deshalb hier
    }
    soweit so gut.... aber wenn ich nun in klasseB irgendwo auf mein attribut $meinAttribut zugreifen will (z.B. $meinAttribut->meinefunction() dann sagt er mir

    Fatal error: Call to a member function meinefunction() on a non-object in...

    was für mich ein Zeichen ist, dass der Konstruktor von meinem Attribut nicht ausgeführt wurde... in Java mach ich das einfach so:

    Classenname attributname = new Classenname();

    aber das geht hier ja irgendwie alles ned :-D

    bitte im Hilfe

    :-)
    Zuletzt editiert von raegtime; 14.06.2009, 19:47.

  • #2
    Nun schon mal $meinAttribut-> meinefunction() (Methode aus Klasse A) probiert....

    analog zu Java machst du jetzt:

    Classenname attributname = new Classenname();

    Classenname.meineFunktion
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Nun schon mal $meinAttribut-> meinefunction() (Methode aus Klasse A) probiert....

      analog zu Java machst du jetzt:

      Classenname attributname = new Classenname();

      Classenname.meineFunktion
      naja $meinAttribut-> meinefunction() meinte ich ja .. hatte mich erst nur verschrieben.. und dabei kommt ja der error...

      und die deklaration so -> Classenname attributname = new Classenname(); klappt halt nicht da meckert er immer das ein string in der zeile sei (das erste Classenname) erkennt er nicht als klasse.... php iss halt komisch ;-)

      Comment


      • #4
        vielleicht mal den Code zeigen, wo du auf die erzeugte Klasse zugreifst.
        Christian

        Comment


        • #5
          Code:
          class guestbook
          {
          	
          	private $db;
          	
          	function guestbook() // Konstruktor
          	{
          		$db = new db_klasse();
          	}
          
          .....
          
          .....
          
          function insert_entry() //Speichern
          	{
          		$this->db->db_query("insert into user_profil ( username,password,email) values
          		('hans','123','[email protected]')");
          	}

          Comment


          • #6
            Hallo,
            Originally posted by raegtime View Post
            Code:
            include("klasseA.php");
            
            class klasseB{
            
            $meinAttribut;
            
            function klasseB()   //konstruktor
            {
                  $meinAttribut = new klasseA();   //"new Anweisung" konnte ich weiter oben garnicht erst machen, deshalb hier
            }
            soweit so gut.... aber wenn ich nun in klasseB irgendwo auf mein attribut $meinAttribut zugreifen will (z.B. $meinAttribut->meinefunction() dann sagt er mir

            Fatal error: Call to a member function meinefunction() on a non-object in...

            was für mich ein Zeichen ist, dass der Konstruktor von meinem Attribut nicht ausgeführt wurde...
            Im obigen Code wird nicht das Attribut $meinAttribut mit einer Instanz der Klasse klasseA belegt, sondern die lokale Variable $meinAttribut der function klasseB(). Wenn du innerhalb einer Methode auf eigene Attribute zugreifen willst, mußt du diese mittels $this referenzieren. Also:
            PHP Code:
            function klasseB()   //konstruktor
            {
                  
            $this->meinAttribut = new klasseA();   

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              super danke! :-) hat geklappt und ist auch verständlich :-)

              Comment

              Working...
              X