Stephan Hochdörfer // 04.03.2017
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public function preDispatch() { parent::preDispatch(); if(!Mage::getSingleton('customer/session')->authenticate($this)){ $this->setFlag('', 'no-dispatch', true); } } // [...] }
<?php $controller = new Mage_Newsletter_ManageController(); $controller->preDispatch();
[27-Feb-2017 13:05:13 Europe/Berlin] PHP Fatal error: Uncaught Error: Class 'Mage' not found in ...
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public function preDispatch() { parent::preDispatch(); if(!Mage::getSingleton('customer/session')->authenticate($this)){ $this->setFlag('', 'no-dispatch', true); } } // [...] }
<?php Cache::get('key');
Cache::shouldReceive('get') ->once() ->with('key') ->andReturn('value');
Mage::getSingleton('customer/session')
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; public function __construct(Mage_Customer_Model_Session $session) { $this->session = $session; } public function preDispatch() { parent::preDispatch(); if(!$this->session->authenticate($this)){ $this->setFlag('', 'no-dispatch', true); } } // [...] }
<?php $controller = new Mage_Newsletter_ManageController(); $controller->preDispatch();
[27-Feb-2017 13:05:13 Uncaught TypeError: Argument 1 passed to Mage_Newsletter_ManageController::__construct() must be an instance of Mage_Customer_Model_Session, none given [...]
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public $session; // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { /** @Inject **/ private $session; // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; public function setSession(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; /** @Inject **/ public function setSession(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php interface SessionAware { public function setSession(Mage_Customer_Model_Session $session); }
class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action implements SessionAware { private $session; public function setSession(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; public function __construct(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; /** @Inject **/ public function setSession(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { private $session; /** * @Inject * @Named('MyCustomerSessionModel') */ public function setSession(Mage_Customer_Model_Session $session) { $this->session = $session; } // [...] }
<?php /** * @ImplementedBy('MyCustomerSessionModel') */ interface SessionAware { public function setSession(Mage_Customer_Model_Session $session); }
services: session_model: class: Mage_Customer_Model_Session newsletter_manager: class: Mage_Newsletter_ManageController calls: - [setSession, ['session_model']]
<?xml version="1.0" encoding="UTF-8" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service id="session_model" class="Mage_Customer_Model_Session"> </service> <service id="newsletter_manager" class="Mage_Newsletter_ManageController"> <call method="setSession"> <argument type="service" id="session_model" /> </call> </service> </services> </container>
<?php use Symfony\Component\DependencyInjection\Reference; // ... $container ->register('session_model', 'Mage_Customer_Model_Session') $container ->register('newsletter_manager', 'Mage_Newsletter_ManageController') ->addMethodCall('setSession', array(new Reference('session_model')));
<?php $controller = new Mage_Newsletter_ManageController(); $controller->setSession(new Mage_Customer_Model_Session());
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public function __construct( Mage_Customer_Model_Session $session, Mage_Customer_Model_Address $address, Mage_Customer_Helper_Address $addressHelper, Mage_Customer_Block_Account_Navigation $nav, Some_Other_Random_Block $block1, Some_Other_Random_Block2 $block2, Some_Other_Random_Block3 $block3, Some_Other_Random_Block4 $block4, Some_Other_Random_Block5 $block5, ) { // [...] } }
<?php interface ContainerAware { public function setContainer(ContainerInterface $container); }
class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action implements ContainerAware { private $session; public function setContainer(ContainerInterface $container); { $this->session = $container->get('customer/session'); } // [...] }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public function __construct( Zend_Pdf $pdf ) { // [...] } }
<?php class Mage_Newsletter_ManageController extends Mage_Core_Controller_Front_Action { public function __construct() { $pdf = new Zend_Pdf(); // [...] } }