2016-11-23 45 views
0

如何清潔和更好下面的「零碎」的PHP代碼:如何使這個代碼更短,更好

<?php 

error_reporting(E_ALL); 
require_once('app/Mage.php'); 
Mage::init(); 
Mage::getSingleton("core/session", array("name" => "frontend")); 
$productList = array(
    array(), 
    array(), 
    array() 
); 
$count = Mage::getSingleton('checkout/session')->getQuote()->getItemsQty(); 
$cart = Mage::getSingleton('checkout/session')->getQuote()->getAllItems(); 
$name = array(); 
$qty = array(); 
$price = array(); 
for ($i = 0; $i < $count; $i++) { 
    $name[$i] = $cart[$i]->getProduct()->getName(); 
    $qty[$i] = $cart[$i]->getQty(); 
    $price[$i] = $cart[$i]->getProduct()->getPrice(); 
    $productList[$i] = array(
     $name[$i], 
     $qty[$i], 
     $price[$i] 
    ); 
} 
print_r($productList); 

我想知道,如何美化這種frament。可能是我應該使用更短的數組初始化形式,在這種情況下一些標準的PHP函數等。

+5

這屬於在http://codereview.stackexchange.com/。 – Fencer04

回答

0

我想這種做法是一個好一點

<?php 
error_reporting(E_ALL); 
require_once("app/Mage.php"); 

function setData($acc, $item) 
{ 
    $acc[] = [ 
    $item->getProduct()->getName(), 
    $item->getQty(), 
    $item->getProduct()->getPrice() 
]; 
return $acc; 
} 

Mage::init(); 
Mage::getSingleton("core/session", ["name" => "frontend"]); 
print_r(array_reduce(Mage::getSingleton("checkout/session")->getQuote() 
->getAllVisibleItems(), "setData", [])); 
1

使用下面的代碼

<?php 
error_reporting(E_ALL); 
require_once('app/Mage.php'); 
Mage::init(); 

Mage::getSingleton("core/session", array("name" => "frontend")); 
$productList = array(); 

$quote = Mage::getSingleton('checkout/session')->getQuote(); 

foreach ($quote->getAllItems() as $item) { 
    $productList[]=array($item->getName(),$item->getQty(),$item->getPrice()); 
} 
+0

如果我們想要得到正確的結果,我們將使用_getAllVisibleItems_而不是_getAllItems()_其餘的代碼是足夠好的。 – Twissell

+0

我已將該更正添加到您的變體中。 – Twissell

0
ini_set('display_errors', '1'); 
require_once('app/Mage.php'); 
Mage::app('default'); 
$storeId = 0; 
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load($storeId)); 

$products = Mage::getModel('catalog/product') 
      ->getCollection() 
      ->addAttributeToSelect('*') 

foreach ($products as $product) { 

     print_r($product->getdata()); 

     } 
+0

您的代碼不符合我的需求。 因爲我想從第三方shell腳本收集上述產品屬性。也不是來自magento模塊。 – Twissell