
Então estou me adaptando às variáveis imutáveis do fantoche, agora procurando algum conselho, ou esclarecimento se já estou no caminho certo.
Tenho um diretório que gostaria de sincronizar, mas potencialmente vários subdiretórios dele. Então, eu gostaria de construir uma matriz de um ou mais caminhos para passar para um método recursivoarquivorecurso. Idealmente, eu teria algo assim
$paths = ['fist/path'] # assume this is provided via class parameter
# this should work, since it's only overriding what was provided from higher scope
if($condition) {
$paths += 'second/path'
}
# this won't fly, since $paths has already been set once locally
if($another_condition) {
$paths += 'third/path'
}
mas não posso fazer isso né, pois as variáveis são imutáveis. O que descobri como a 'melhor' abordagem até agora é algo assim
$paths = ['fist/path']
if($condition) {
$condition_1_path = ['second/path']
} else {
$condition_1_path = []
}
if($another_condition) {
$condition_2_path = ['third/path']
} else {
$condition_2_path = []
}
$paths = concat($paths, $condition_1_path, $condition_2_path)
Não tenho certeza seconcatomitirá uma entrada do resultado se for fornecido um array vazio para um de seus argumentos, mas aguardando para testar isso assim que eudescobrir como carregar o stdlib.
De qualquer forma, olhando para este código, para mim, é simplesmente horrível. Existe uma maneira mais limpa de fazer algo assim?
Responder1
É feio, mas eu fiz assim.
if($condition) {
$condition_1_path = 'first/path'
} else {
$condition_1_path = ''
}
if($another_condition) {
$condition_2_path = 'second/path'
} else {
$condition_2_path = ''
}
# split into array based on whitespace
$mylistofpaths = split("$condition_1_path $condition_2_path", '\s+')