refactoring - PHP - simple refactor -
i have following code:
$image_1 = $value->getelementsbytagname("image1"); $image1 = $image_1->item(0)->nodevalue; $image_2 = $value->getelementsbytagname("image2"); $image2 = $image_2->item(0)->nodevalue;
is there easier way, not repeat code if need $image_3 ?
i.e. how can refactor this?
thanks
update:
i using $images_x variables in further code, needs refactoring:
update 2: - full code:
$image_1 = $value->getelementsbytagname("image1"); $image1 = $image_1->item(0)->nodevalue; $image_2 = $value->getelementsbytagname("image2"); $image2 = $image_2->item(0)->nodevalue; $image_3 = $value->getelementsbytagname("image3"); $image3 = $image_3->item(0)->nodevalue; $filename_1 = basename($image1); $ch = curl_init ($image1); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_binarytransfer,1); $rawdata_1=curl_exec ($ch); curl_close ($ch); $fp = fopen(mage::getbasedir('media') . ds . 'import/'.$filename_1,'w'); fwrite($fp, $rawdata_1); fclose($fp); $filename_2 = basename($image2); $ch = curl_init ($image2); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_binarytransfer,1); $rawdata_2=curl_exec ($ch); curl_close ($ch); $fp = fopen(mage::getbasedir('media') . ds . 'import/'.$filename_2,'w'); fwrite($fp, $rawdata_2); fclose($fp); $filename_3 = basename($image3); $ch = curl_init ($image3); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_binarytransfer,1); $rawdata_3=curl_exec ($ch); curl_close ($ch); $fp = fopen(mage::getbasedir('media') . ds . 'import/'.$filename_3,'w'); fwrite($fp, $rawdata_3); fclose($fp); $product->addimagetomediagallery(mage::getbasedir('media') . ds . 'import/' . $filename_1, array('image', 'small_image','thumbnail'), false, false); $product->addimagetomediagallery(mage::getbasedir('media') . ds . 'import/' . $filename_2, array('image', 'small_image','thumbnail'), false, false); $product->addimagetomediagallery(mage::getbasedir('media') . ds . 'import/' . $filename_3, array('image', 'small_image','thumbnail'), false, false);
you use loops:
$images = array(); ($i = 1; $i <= 2; $i++) { $images[] = $value->getelementsbytagname("image" . $i)->item(0)->nodevalue; } // , can image via $images[0], $images[1] , on
all code can rewritten brad f jacobs suggested:
function downloadandsave($image) { $filename = basename($image); $ch = curl_init ($image); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_binarytransfer,1); $rawdata=curl_exec ($ch); curl_close ($ch); $fp = fopen(mage::getbasedir('media') . ds . 'import/'.$filename,'w'); fwrite($fp, $rawdata); fclose($fp); return $filename; } // here should have loop, suppose foreach ($products $product) { ($i = 1; $i <= 2; $i++) { $filename = downloadandsave($value->getelementsbytagname("image" . $i)->item(0)->nodevalue); $product->addimagetomediagallery(mage::getbasedir('media') . ds . 'import/' . $filename, array('image', 'small_image','thumbnail'), false, false); } // end of foreach }
Comments
Post a Comment