Salve ho cambiato uno scriptino, per OOP, preso da un libro della hoepli.
Nella classe c'è una funzione che deve settare il valore introdotto come data .
strtotime($valore_passato) , Se la risposta è -1 il valore introdotto è errato!
Invece posso passargli qualsiasi stringa, se la beve e la pubblica!
ecco il codice
codice:
                 class proObj {
    private $_propieta = array(
                  'nome' => null,
                  'data' => null
				 );

    public function _get($propNome) {
      if(!array_key_exists($propNome, $this->_propieta)) {
        throw new Exception('Valore della proprietà non valido!');
        }
      if(method_exists($this, '_get' . $propNome)) {
        return call_user_func(array($this, '_get' . $propNome));
        } else {
        return $this->_propieta[$propNome];
        }
    }
    public function _set($propNome, $value) {
      if(!array_key_exists($propNome, $this->_propieta)) {
        throw new Exception("Valore " . $propNome . " non valido!");
        }
      if(method_exists($this, '_set'.$propNome)) {
        return call_user_func(
                  array($this, '_set'.$propNome),
                  $value
                   );
        }  else {
        $this->_propieta[$propNome] = $value;
        }
    }
    public function _setDataNascita($dn) {
      if(strtotime($dn) == -1) {
        throw new Exception("La data di nascita deve essere valida!");
      }
      $this->_propieta['data'] = $dn;
    }
    public function saluto() {
      echo "Salve! il mio nome è $this->nome.  Sono nato il $this->data";
    }
  }
############################  RICHIAMO per visualizzare
    $obj = new proObj();
  $obj->nome = "ZZZ";
  $obj->data = 'March 5, 1987';
  $obj->saluto();
 
 echo "
";

  $obj2 = new proObj();
  $obj2->nome = "Altro nome"; 
  $obj2->data = "blue"; //_setDataNascita è richimata da _set .... 'blue'; //throws  exception
  $obj2->saluto();
grazie