For example i have following two classes.
<?php
namespace Namespace\Modulename\Model;
class Message
{
public function getMessage()
{
return 'Hello World!';
}
}
?>
<?php
namespace Namespace\Modulename\Model;
class Example
{
protected $messageObject;
public function __construct(Message $messageObject)
{
$this->messageObject = $messageObject;
}
public function sendHelloAgainMessage()
{
return $this->messageObject->getMessage();
}
}
?>
I dont need to create below xml in di.xml
.because objectmanager
take care creation of object automatically from constructor type(means here Message)
<type name="Namespace\Modulename\Model\Example">
<arguments>
<argument name="messageObject" xsi:type="object">Namespace\Modulename\Model\Message</argument>
</arguments>
</type>
But my doubt is in which time i have to create above xml?
update
for example please look at <type name="Magento\Catalog\Helper\Product">
di.xml in catalog module.
<argument name="catalogSession" xsi:type="object">Magento\Catalog\Model\Session\Proxy</argument>
if i give directly that class name(Magento\Catalog\Model\Session\Proxy) in constructor instead of in xml?
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Catalog\Model\Session\Proxy $catalogSession,