How to get customer data by customer id in magento 2?

Magento 2 Retrieve Customer Data Object by ID with the help of interface CustomerRepositoryInterface.

You can get customer information by just passing the customer id using below code snippet,

I have written function inside Block class,

<?php

namespace Rbj\Customer\Block;

class Customer extends \Magento\Framework\View\Element\Template
{
    /**
     * Constructor
     *
     * @param \Magento\Framework\View\Element\Template\Context  $context
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
        array $data = []
    ) {
        $this->customerRepository = $customerRepository;
        parent::__construct($context, $data);
    }

    /* Pass customer id $id*/
    public function getCustomer($id)
    {   
        return $this->customerRepository->getById($id);
    }

Call getCustomer($id) function in template file,

$customerId = 1; //pass dynamic customer id
$getCustomer = $block->getCustomer($customerId);
echo $customer->getFirstname();  // result customer first name
echo $customer->getEmail(); // result as customer email 
echo $customer->getLastname(); // customerr lastname

Get all customer data by the below way,

echo “<pre>”;print_r($customer->__toArray());

Array
(
    [website_id] => 1
    [email] => roni_cost@example.com
    [group_id] => 1
    [store_id] => 1
    [created_at] => 2017-11-10 13:09:03
    [updated_at] => 2017-11-23 12:48:29
    [disable_auto_group_change] => 0
    [created_in] => Default Store View
    [prefix] => 
    [firstname] => Veronica
    [middlename] => 
    [lastname] => Costello
    [suffix] => 
    [dob] => 1973-12-15
    [default_billing] => 1
    [default_shipping] => 1
    [taxvat] => 
    [confirmation] => 
    [gender] => 2
    [addresses] => Array
        (
            [0] => Array
                (
                    [firstname] => Veronica
                    [lastname] => Costello
                    [street] => Array
                        (
                            [0] => 6146 Honey Bluff Parkway
                        )

                    [city] => Calder
                    [country_id] => US
                    [region] => Array
                        (
                            [region] => Michigan
                            [region_code] => MI
                            [region_id] => 33
                        )

                    [region_id] => 33
                    [postcode] => 49628-7978
                    [telephone] => (555) 229-3326
                    [id] => 1
                    [customer_id] => 1
                    [default_billing] => 1
                    [default_shipping] => 1
                )

        )

    [id] => 1
    [extension_attributes] => Array
        (
            [is_subscribed] => 
        )

)

How to get remote address in magento 2 way?

Get the Remote address IP by Magento 2 with a simple code snippet,

<?php
public function __construct(
    \Magento\Framework\HTTP\PhpEnvironment\RemoteAddress $remoteAddress
    ) {
    $this->_remoteAddress = $remoteAddress;
}
public function getRemoteAddress(){
    $remoteAddress = $this->_remoteAddress->getRemoteAddress();
    return $remoteAddress;
}

Call function in template file by below way,

echo $this->getRemoteAddress();

How to get product collection by product sku in magento 2?

You can get product data by product SKU in Magento 2 by below code snippets,

<?php

namespace Rbj\Training\Block;

class Product extends \Magento\Framework\View\Element\Template
{
    /**
     * Constructor
     *
     * @param \Magento\Framework\View\Element\Template\Context  $context
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
        array $data = []
    ) {
        $this->productRepository = $productRepository;
        parent::__construct($context, $data);
    }

    /**
    * Get Product by SKU
    * @param mixed
    * @return \Magento\Catalog\Model\Product $product
    */
    public function getProductBySKU($sku)
    {
        try {
            $product = $this->productRepository->get($sku);
        } catch (\Exception $exception) {
            throw new \Magento\Framework\Exception\NoSuchEntityException(__('Such product doesn\'t exist'));
        }
        return $product;
    }
}

Call product collection under the template file by below code,

$sku = '24-MB01';
$product = $block->getProductBySKU($sku);
echo $product->getName(); // product name
echo $product->getId(); // product id