Zend Framework 2 抽象工厂正在打印部分类代码


zend framework 2 abstract factory is printing part of the class code

我是ZF2的新手。我试图复制一本 learnzf.com 书中谈论抽象工厂的例子。当我尝试将服务配置为 AbstractFactoryInterface 时,ZF2 打印类的部分代码作为结果并抛出类似 .

模块配置.php

    <?php
return array(
    'controllers' => array(
        'invokables' => array(
            'Debug'Controller'Skeleton' => 'Debug'Controller'SkeletonController',
        ),
    ),
    'router' => array(
        'routes' => array(
            'debug' => array(
                'type'    => 'Literal',
                'options' => array(
                    // Change this to something specific to your module
                    'route'    => '/skeleton',
                    'defaults' => array(
                        // Change this value to reflect the namespace in which
                        // the controllers for your module are found
                        '__NAMESPACE__' => 'Debug'Controller',
                        'controller'    => 'Skeleton',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    // This route is a sane default when developing a module;
                    // as you solidify the routes for your module, however,
                    // you may want to remove it and replace it with more
                    // specific routes.
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:controller[/:action]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'Debug' => __DIR__ . '/../view',
        ),
    ),
    'service_manager' => array(
        'abstract_factories' => array(
            'Debug'Service'Factory'TimerAbstractFactory',
        ),
    ),
    'timers' => array(
        'timer' => array(
            'times_as_float' => true,
        ),
        'timer_non_float' => array(
            'times_as_float' => false,
        ),
    ),
);

TimerAbstractFactory.php

<?
namespace Debug'Service'Factory;
use Zend'ServiceManager'AbstractFactoryInterface;
use Zend'ServiceManager'ServiceLocatorInterface;
use Debug'Service'Timer as TimerService;
class TimerAbstractFactory implements AbstractFactoryInterface{
    protected $configKey = 'timers';
    public function canCreateServiceWithName(ServiceLocatorInterface $services,$name,$requestedName){
        $devuelve = false;  
        $config = $services->get('config');
        if(!empty($config)){
            $devuelve = isset($config[$this->configKey][$requestedName]);
        }
        return $devuelve;
    }
    public function createServiceWithName(ServiceLocatorInterface $services,$name,$requestedName){
        $config = $services -> get('config');
        $timer = new TimerService($config[$this->configKey][$requestedName]['times_as_float']);
        return $timer;
    }
}

结果(我可以在 http://localhost:8085 中看到):

<body>
get('config');
        if(!empty($config)){
            $devuelve = isset($config[$this-&gt;configKey][$requestedName]);
        }
        return $devuelve;
    }
    public function createServiceWithName(ServiceLocatorInterface $services,$name,$requestedName){
        $config = $services -&gt; get('config');
        $timer = new TimerService($config[$this-&gt;configKey][$requestedName]['times_as_float']);
        return $timer;
    }
} <br>
<font size="1"><table class="xdebug-error xe-fatal-error" dir="ltr" border="1" cellspacing="0" cellpadding="1">
<tbody><tr><th align="left" bgcolor="#f57900" colspan="5"><span style="background-color: #cc0000; color: #fce94f; font-size: x-large;">( ! )</span> Fatal error: Class 'Debug'Service'Factory'TimerAbstractFactory' not found in /var/www/zf/vendor/zendframework/zend-servicemanager/src/ServiceManager.php on line <i>313</i></th></tr>
<tr><th align="left" bgcolor="#e9b96e" colspan="5">Call Stack</th></tr>
<tr><th align="center" bgcolor="#eeeeec">#</th><th align="left" bgcolor="#eeeeec">Time</th><th align="left" bgcolor="#eeeeec">Memory</th><th align="left" bgcolor="#eeeeec">Function</th><th align="left" bgcolor="#eeeeec">Location</th></tr>
<tr><td bgcolor="#eeeeec" align="center">1</td><td bgcolor="#eeeeec" align="center">0.0009</td><td bgcolor="#eeeeec" align="right">230624</td><td bgcolor="#eeeeec">{main}(  )</td><td title="/var/www/zf/public/index.php" bgcolor="#eeeeec">../index.php<b>:</b>0</td></tr>
<tr><td bgcolor="#eeeeec" align="center">2</td><td bgcolor="#eeeeec" align="center">0.0104</td><td bgcolor="#eeeeec" align="right">408576</td><td bgcolor="#eeeeec">Zend'Mvc'Application::init(  )</td><td title="/var/www/zf/public/index.php" bgcolor="#eeeeec">../index.php<b>:</b>22</td></tr>
<tr><td bgcolor="#eeeeec" align="center">3</td><td bgcolor="#eeeeec" align="center">0.0461</td><td bgcolor="#eeeeec" align="right">732368</td><td bgcolor="#eeeeec">Zend'ModuleManager'ModuleManager-&gt;loadModules(  )</td><td title="/var/www/zf/vendor/zendframework/zend-mvc/src/Application.php" bgcolor="#eeeeec">../Application.php<b>:</b>253</td></tr>
<tr><td bgcolor="#eeeeec" align="center">4</td><td bgcolor="#eeeeec" align="center">0.0600</td><td bgcolor="#eeeeec" align="right">829528</td><td bgcolor="#eeeeec">Zend'EventManager'EventManager-&gt;trigger(  )</td><td title="/var/www/zf/vendor/zendframework/zend-modulemanager/src/ModuleManager.php" bgcolor="#eeeeec">../ModuleManager.php<b>:</b>123</td></tr>
<tr><td bgcolor="#eeeeec" align="center">5</td><td bgcolor="#eeeeec" align="center">0.0600</td><td bgcolor="#eeeeec" align="right">829576</td><td bgcolor="#eeeeec">Zend'EventManager'EventManager-&gt;triggerListeners(  )</td><td title="/var/www/zf/vendor/zendframework/zend-eventmanager/src/EventManager.php" bgcolor="#eeeeec">../EventManager.php<b>:</b>205</td></tr>
<tr><td bgcolor="#eeeeec" align="center">6</td><td bgcolor="#eeeeec" align="center">0.0600</td><td bgcolor="#eeeeec" align="right">831336</td><td bgcolor="#eeeeec"><a href="http://www.php.net/function.call-user-func" target="_new">call_user_func</a>
(  )</td><td title="/var/www/zf/vendor/zendframework/zend-eventmanager/src/EventManager.php" bgcolor="#eeeeec">../EventManager.php<b>:</b>444</td></tr>
<tr><td bgcolor="#eeeeec" align="center">7</td><td bgcolor="#eeeeec" align="center">0.0600</td><td bgcolor="#eeeeec" align="right">831616</td><td bgcolor="#eeeeec">Zend'ModuleManager'Listener'ServiceListener-&gt;onLoadModulesPost(  )</td><td title="/var/www/zf/vendor/zendframework/zend-eventmanager/src/EventManager.php" bgcolor="#eeeeec">../EventManager.php<b>:</b>444</td></tr>
<tr><td bgcolor="#eeeeec" align="center">8</td><td bgcolor="#eeeeec" align="center">0.0601</td><td bgcolor="#eeeeec" align="right">840312</td><td bgcolor="#eeeeec">Zend'ServiceManager'Config-&gt;configureServiceManager(  )</td><td title="/var/www/zf/vendor/zendframework/zend-modulemanager/src/Listener/ServiceListener.php" bgcolor="#eeeeec">../ServiceListener.php<b>:</b>222</td></tr>
<tr><td bgcolor="#eeeeec" align="center">9</td><td bgcolor="#eeeeec" align="center">0.0651</td><td bgcolor="#eeeeec" align="right">872296</td><td bgcolor="#eeeeec">Zend'ServiceManager'ServiceManager-&gt;addAbstractFactory(  )</td><td title="/var/www/zf/vendor/zendframework/zend-servicemanager/src/Config.php" bgcolor="#eeeeec">../Config.php<b>:</b>137</td></tr>
</tbody></table></font>
</body>

TimerAbstractFactory.php开头的<?应该<?php,除非您启用了短标记。