codice:
<?php // 5
interface FiguraGeometrica {
public function Area();
}
class Cerchio implements FiguraGeometrica {
public function __construct( $raggio ){
$this->raggio = &$raggio;
}
public function Area() {
return ( 3.14 * $this->raggio * $this->raggio );
}
private $raggio;
}
class Quadrato implements FiguraGeometrica {
public function Area() {
return ( $this->lato * $this->lato );
}
private $lato;
}
$miaFigura = &new Cerchio( 10 );
echo $miaFigura->Area().'<hr />';
if( is_a( $miaFigura, 'Cerchio' ) ) {
echo 'OK
';
}
if( is_a( $miaFigura, 'FiguraGeometrica' ) ) {
echo 'OK
';
}
?>
[editato]
dimenticavo, per i tipi di dato in PHP4 come in PHP5 ci sono varie soluzioni, una tra queste:
http://www.devpro.it/php5_id_42.html
[rieditato]
... che sto' per aggiornare
perche' in RC1 andava ma ora mi sono accorto che non andava 
cmq sia, altro esempio
codice:
require( 'TypeHints.class.php' );
interface FiguraGeometrica {
public function Area();
}
class Cerchio implements FiguraGeometrica {
public function __construct( Float &$raggio ){
$this->raggio = &$raggio->value;
}
public function Area() {
return new Float( 3.14 * $this->raggio * $this->raggio );
}
private $raggio;
}
class Quadrato implements FiguraGeometrica {
public function __construct( Float &$lato ){
$this->lato = &$lato->value;
}
public function Area() {
return new Float( $this->lato * $this->lato );
}
private $lato;
}
$miaFigura = &new Cerchio( new Float( 10 ) );
echo $miaFigura->Area()->value.'<hr />';
if( is_a( $miaFigura, 'Cerchio' ) ) {
echo 'OK
';
}
if( is_a( $miaFigura, 'FiguraGeometrica' ) ) {
echo 'OK
';
}