In this post I am going to explain how to get list of all products or you can say product collection in magento 2.

1. Using Dependency Injection

Add below code snippet in Block class.

protected $_productCollectionFactory;
        
public function __construct(
	\Magento\Backend\Block\Template\Context $context,        
	\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
	array $data = []
)
{
	$this->_productCollectionFactory = $productCollectionFactory;
	parent::__construct($context, $data);
}

public function getProductCollection() 
{
	$productCollection = $this->_productCollectionFactory->create()
			->addAttributeToSelect('*')
			->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
			->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
			->setOrder('entity_id', 'DESC');
	return $productCollection;
}

Add below code snippet in template file.

// Get product collection
$productCollection = $block->getProductCollection();

echo "<pre>";
print_r($productCollection->getData());
echo "</pre>";

if ($productCollection && count($productCollection) > 0) {
    foreach ($productCollection AS $product) {
        echo $product->getId() . "<br/>";
        echo $product->getName() . "<br/>";
        echo $product->getProductUrl() . "<br/>";
    }
}

 

2. Using Object Manager

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

$productCollectionFactory = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory')->create();

// Get product collection
$productCollection = $productCollectionFactory->addAttributeToSelect('*')
        ->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
        ->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
        ->setOrder('entity_id', 'DESC');

echo "<pre>";
print_r($productCollection->getData());
echo "</pre>";

if ($productCollection && count($productCollection) > 0) {
    foreach ($productCollection AS $product) {
        echo $product->getId() . "<br/>";
        echo $product->getName() . "<br/>";
        echo $product->getProductUrl() . "<br/>";
    }
}