Tamamen kod globalsin kullanım kurtulmak için, ve aynı zamanda genel olarak daha iyi yapmak için, bu satırlar boyunca bir şey yapabilirsiniz:
- bir süper küresel olduğu gibi, $ _POST kullanarak durdurun. Kod superglobals değerleri ihtiyacı olduğunda, parametre olarak onları geçmek
- $ GLOBALS içine değerleri tutmayın. Eğer birden fazla değer dönmek gerekirse, bir nesne ya da bir dizi dönen düşünün
İşte ben bunu geliştirmek için kodunuzu değiştirmek düşünürdüm nasıl:
function CatchListings($listings) {
$filteredListings = array_map('mysql_real_escape_string', $listings);
//I assume you only need the values in the array in the original snippet,
//so we need to grab them from the parameter array and return only that
$requiredListings = array();
$requiredKeys = array('itemnum','msrp','edprice','itemtype','box','box2','box25','box3','box4','box5','box6','box7','itemcolor','link');
foreach($requiredKeys as $key) {
$requiredListings[$key] = $filteredListings[$key];
}
return $requiredListings;
}
Bu fonksiyonu kullanmak için, sadece yapmanız $result = CatchListings($_POST);
. Aynı sonuç, kullanılan hiçbir globallerinin.
Düşünün bir şey olsa da, var. Bu sadece işlevi için rastgele doldurulmuş dizi (yani $ _POST) geçmek ve özel tuşları (yani $ requiredKeys dizi) içeren beklemek mümkün olan en iyi şekilde olmayabilir. Eksik tuşları kontrol etmek için mantık ekleyebilir veya geçirmeden önce sonrası dizi işlemek ya isteyebilirsiniz.