Quale soluzione è più logica? Il valore può essere nullo, ma quando non è nullo deve essere una stringa.
Questo (primo):
function setValue(string $value = null);
Per me questo è male; dato che ora possiamo chiamare il metodo senza nulla:
$dependency->setValue():
O questo (secondo)?
function setValue($value)
{
if(is_string($value) OR $value == null)
{
//allow value
} else {
//throw error
}
}
O questo (terzo)?
function setValue(string $value)
{
$this->value = $value;
}
//client
function client()
{
$value = "test";
if($value)
{
$this->dependency->setValue($value);
}
}
Questa soluzione non consente l'impostazione di null.
Preferisco la seconda soluzione. L'unico aspetto negativo è che l'interfaccia non mostra chiaramente quali valori sono accettati.