Genellikle Kimin operasyon bağlı bazı argüman türüne bağlıdır yazma fonksiyonlarını. Bir örnek bir MySQL veritabanı satır eklemek için bana yardımcı olacak bir fonksiyonu olacaktır.
function insert($table, $columns, $values) {
if(is_string($values)) {
$values = "('" . $values . "')";
}
else if(is_array($values)) {
$values = "('" . implode("','", $values) . "')";
}
//process $table and $columns here
mysql_query("INSERT INTO $table $columns $values");
}
Fikir bazen yalnızca tek bir değer eklemek istiyorum ama bazen değerler dizisini eklemek istediğiniz olacaktır. Ancak, bu $ değerlerin türü duruma bağlı olacaktır ve ben genel olarak, yerleşik PHP fonksiyonları Bunu önlemek için eğiliminde olduğunu fark anlamına gelir. PHP çekirdek böyle bir fonksiyonu hayata eğer, bunun yerine hem davalarını InsertString ve insertArray ayrılabilir olacak gibi hissediyorum. Türünü yüklenme faydaları kullanıcı onlar gibi uzun bir dize ya da bir dizi olarak $ değerleri içine koymak ne hakkında endişelenmenize gerek yok ki vardır. Onlar bir dizesinde iletebilirsiniz unutmak Örneğin, hala herhangi bir sorun olmadan array('singleValue')
iletebilirsiniz. Bu nedenle, işlev kullanılarak daha kolay olur. Bu yaklaşım ile herhangi bir tuzaklar var mı?
Ayrıca, aynı anda birden fazla satır eklemek için işlevini genişletmek olabilir. Bu çok boyutlu bir dizi olarak girdi olacak ve böylece bunları aşağıdaki gibi işlenmiş bir satır gerekir:
if(is_multi($values)) {
foreach($values as $key => $value) {
$values[$key] = "('" . implode("','", $value) . "')";
}
$values = implode(",", $values);
}
Yine orijinal işlevine bu çakmak veya yeni bir işlev, insertMulti oluşturabilir ya. Bu durumda ve önceki durum arasındaki fark, teknik $ değerlerin türü insertArray ve insertMulti arasında değişiklik olmamasıdır. Ancak, $ değerleri ele edildiği şekilde değiştirmek yapar ve bu değişim $ değerlerinin yapısına bağlıdır. Yararları ve aşırı yük tip tuzaklar var eğer öyleyse, onlar da bu durum için geçerli yoksa veya bu farklı tedavi edilmelidir?
Edit: Thank you for your answers! I realise that there are many PHP functions that accept mixed values but there are also many that do not. For example, strlen
ve count
Bunun dışında benzer fonksiyonlar olmak bana görünüyor dizeleri ve diğer kolları diziler ve nesneleri yönetir. O zaman dizeleri, diziler ve nesneleri işleme countAll
hangi uygulamak için daha iyi olurdu? Sadece tarihsel nedenlerle ayrı tutulur? Strong>