Eminim ne yaptığını anlamak için MeioUpload için kaynak kodu ile okuyordu, ve çoğunlukla kod anlamak oldukça kolaydır. Ancak, ben sadece anlamaya gibi olamaz, ve ben sadece bir şey eksik yaşıyorum bu yüzden yazarın kısmında bir hata olup olmadığını belirlemek için çalışıyor ya ben kod bölümünde üzerine geldi.
Esasen, bu işlev varsayılan bir görüntünün dosya geçirilir, ve ayrılmış sözcükler listesine bu dosya ekler (ve bunun için bir yedek dize oluşturur). Ben anlamaya olamaz kod satırının yanındaki (yorumlarda) bir ok ve soru işaretleri koyduk:
/**
* Include a pattern of reserved word based on a filename,
* and it's replacement.
* @author Vinicius Mendes
* @return null
* @param $default String
*/
function _includeDefaultReplacement($default){
$replacements = $this->replacements;
list($newPattern, $ext) = $this->splitFilenameAndExt($default);
if(!in_array($newPattern, $this->patterns)){
$this->patterns[] = $newPattern;
$newReplacement = $newPattern;
if(isset($newReplacement[1])){ // <--- ???
if($newReplacement[1] != '_'){
$newReplacement[1] = '_';
} else {
$newReplacement[1] = 'a';
}
} elseif($newReplacement != '_') {
$newReplacement = '_';
} else {
$newReplacement = 'a';
}
$this->replacements[] = $newReplacement;
}
}
Anladığım kadarıyla, $ newReplacement her zaman bir dize değil, bir dizi olmalıdır. Sonuçta bu işlevinden döndürülen dizinin ilk elemanı onun değerini alır olmasıdır:
function splitFilenameAndExt($filename){
$parts = explode('.',$filename);
$ext = $parts[count($parts)-1];
unset($parts[count($parts)-1]);
$filename = implode('.',$parts);
return array($filename,$ext);
}
If () deyimi bana hiç mantıklı böylece. Bu meydana asla bir durumu yakalamak için çalışıyor gibi görünüyor. Ya da ben yanlış ve o kod bölümünde bir amaca hizmet ediyor?