- Codice: Seleziona tutto
class a {
public function __construct($x){
if($x==1)
{echo "ok"; $this->initiliaze();}
else
{echo "inizializzazione impossibile";}
}
private initilize(){
... inizializzazione ...
}
}
$test1=new a(1);
$test2=new a(2);
nel primo caso viene costruita una classe e viene inizializzata.
nel secondo caso la classe non viene inizializzata, tuttavia $test2 è comunque un oggetto di tipo a utilizzabile.
Mi piacerebbe che new a(2) possa ritornare false o simile, mentre new a(1) che ritorni un oggetto valido.
si può?
return false nel constructor viene ignorato completamente
unset ($self) pure viene ignorato.
Insomma... un oggetto può distruggere se stesso in qualche modo?
finora me la sono cavata così, ma non mi piace:
- Codice: Seleziona tutto
class a {
public ok=false;
public function __construct($x){
if($x==1)
{echo "ok"; $this->initiliaze();}
else
{echo "inizializzazione impossibile";}
}
private initilize(){
... inizializzazione ...
$this->ok=true;
}
static public function init($x){
$tmp=new self($x);
if($tmp->ok)return $tmp;
unset($tmp);
return false;
}
}
$test1=a::init(1);
$test2=a::init(2);
$test1 è una classe di tipo a; $test2==false;
Ciao
01


