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



## BitMan (10. April 2011)

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


```
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


----------



## Flex (10. April 2011)

```
<?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


----------



## NetBull (10. April 2011)

@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


----------



## Flex (10. April 2011)

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

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();
?>
```


----------



## NetBull (10. April 2011)

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.


----------



## Flex (10. April 2011)

Wieso schreibst du eigentlich unter zwei verschiedenen Accounts?


----------



## NetBull (18. April 2011)

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!


----------

