OOP -> Anfängerfrage -> Fatal error: Cannot access empty property in...

BitMan

Erfahrenes Mitglied
Hallo Leute,

da ich bisher in PHP ohne OOP gearbeitet habe und es unschön ist, möchte ich mich nun in OOP einarbeiten.

Folgendes Beispiel will aber nicht und mir erschliesst sich der Grund für die Fehlermeldung nicht!

Fehlermeldung: Fatal error: Cannot access empty property in... line 12

Code:
class geoObjectClass
class geoObjectClass
{
	public $cStreetName;
	public $mStreetNumber;
	public $mZipCode;
	public $mTownName;
	private $mSearchTherm;		
	
	public function __construct($pStreetName)
	{
		$this -> $cStreetName = $pStreetName;			
	}
	
	public function __destruct ()
	{
		$this -> $cStreetName = "";
		$this -> $mStreetNumber = "";
		$this -> $mZipCode = "";
		$this -> $mTownName = "";
		$this -> $mSearchTherm = "";
	}
	
	public function getStreetName()
	{
		return $this -> $cStreetName;
	}
}

$geoObj = new geoObjectClass("test");
echo $geoObj -> $cStreetName;
echo $geoObj -> getStreetName();

Was mache ich falsch?

cu s00n
BitMan
 
PHP:
<?php
class geoObjectClass
{
    public $cStreetName;
    public $mStreetNumber;
    public $mZipCode;
    public $mTownName;
    private $mSearchTherm;      
    
    public function __construct($pStreetName)
    {
        $this->cStreetName = $pStreetName;           
    }
    
    public function __destruct ()
    {
        $this->cStreetName = "";
        $this->mStreetNumber = "";
        $this->mZipCode = "";
        $this->mTownName = "";
        $this->mSearchTherm = "";
    }
    
    public function getStreetName()
    {
        return $this->cStreetName;
    }
}
 
$geoObj = new geoObjectClass("test");
echo $geoObj->cStreetName;
echo $geoObj->getStreetName();
?>

Ich hab den Quelltext korrigiert, eventuell hilft dir das ja bereits in den Grundzügen...

Mehr Informationen gibt es hier auch noch hier:
OOP Die Grundlagen auf php.net
 
@FLEX:

Hi, merci,...

Dein Beispiel läuft, aber ich seh grad nicht was ich falsch gemacht habe, ausser das Du die Indikatoren für Variablen weggelassen hast, ... wunderte mich das es ohne $ läuft.

Aber danke erst mal...

cu s00n BitMan
 
Du betrittst den Variablenraum durch das $this. Du bist dann im Variablenraum der Klasse und musst danach nur noch den Namen der Variable benutzen.

Ansonsten wäre es eine variable Variable, Beispiel:

PHP:
<?php

class VarTest
{
  public $var;

  function test()
  {
    $str = 'var';
    $this->var = 'testvar';

    echo $this->var; // gibt 'testvar' aus
    echo $this->$str; // gibt ebenfalls 'testvar' aus, da es folgendes ergibt: $this->var2
  }
}

$class = new VarTest;
$class->test();
?>
 
aaaaaahhh.. das ist ja logisch.. bin ich nur nicht drauf gekommen. lol. klar, muss ja nur einmal sagen: achtung hier kommt ein var. merci, danke dir.
 
oah... hier auch mit zwei Accounts.. Das ist mir bei myCsharp auch passiert. War lange weg und hatte dann keine Zugangsdaten mehr. Komischerweise habe ich dann ein altes image wieder aufgefahren. Wenn ich mit FireFox rein geh hab ich den einen Nick, bei Safari einen anderen... lol. Muss die hier mal fragen ob die das nicht zusammenlegen können.

Aber Danke Dir für die Hints. cu!
 
Zurück