注意:开发在Netabean IDE中完成,托管在WAMPP上是本地的,我为虚拟主机配置了它。正在使用Composer。
我已经回顾了与此相似的其他问题,我没有同样的问题。请注意这是我第一次使用Zend框架。谢谢。
使用回声帮助我找到了当我在Module.php中创建AlbumTable时失败。
这是Stacktrace:
[2015年3月30日20:29:11欧洲/巴黎] PHP致命错误:类 '相册\模型\ AlbumTable'找不到 第43行的C:\ wamp \ www \ quickstart \ module \ Album \ Module.php
[2015年3月30日20:29:11欧洲/巴黎] PHP Stack跟踪:
[2015年3月30日20:29:11欧洲/巴黎] PHP 1. {main}() C:\瓦帕\ WWW \快速启动\公共\的index.php:0
[2015年3月30日20:29:11欧洲/巴黎] PHP 2。 Zend \ Mvc \ Application-> run()C:\ wamp \ www \ quickstart \ public \ index.php:26
[2015年3月30日20:29:11欧洲/巴黎] PHP 3。 的Zend \ eventmanager进行\ EventManager->触发器() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的mvc \ Application.php:313
[2015年3月30日20:29:11欧洲/巴黎] PHP 4。 的Zend \ eventmanager进行\ EventManager-> triggerListeners() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:207
[2015年3月30日20:29:11欧洲/巴黎] PHP 5。 call_user_func:{C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468}() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468
[2015年3月30日20:29:12欧洲/巴黎] PHP 6。 的Zend \的mvc \ DispatchListener-> onDispatch() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468
[2015年3月30日20:29:12欧洲/巴黎] PHP 7。 的Zend \的mvc \控制器\ AbstractController->调度() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的mvc \ DispatchListener.php:113
[2015年3月30日20:29:12欧洲/巴黎] PHP 8。 的Zend \ eventmanager进行\ EventManager->触发器() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的mvc \控制器\ AbstractController.php:116
[2015年3月30日20:29:12欧洲/巴黎] PHP 9。 的Zend \ eventmanager进行\ EventManager-> triggerListeners() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:207
[2015年3月30日20:29:12欧洲/巴黎] PHP 10。 call_user_func:{C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468}() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468
[2015年3月30日20:29:12欧洲/巴黎] PHP 11。 的Zend \的mvc \控制器\ AbstractActionController-> onDispatch() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\ eventmanager进行\ EventManager.php:468
[2015年3月30日20:29:12欧洲/巴黎] PHP 12。 专辑\控制器\ AlbumController->的indexAction() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的mvc \控制器\ AbstractActionController.php:83
[2015年3月30日20:29:12欧洲/巴黎] PHP 13。 专辑\控制器\ AlbumController-> getAlbumTable() C:\瓦帕\ WWW \快速启动\模块\相册\ SRC \相册\控制器\ AlbumController.php:26
[2015年3月30日20:29:12欧洲/巴黎] PHP 14。 的Zend \的ServiceManager \ ServiceManager->得到() C:\瓦帕\ WWW \快速启动\模块\相册\ SRC \相册\控制器\ AlbumController.php:51
[2015年3月30日20:29:12欧洲/巴黎] PHP 15。 的Zend \的ServiceManager \ ServiceManager->创建() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:525
[2015年3月30日20:29:12欧洲/巴黎] PHP 16。 的Zend \的ServiceManager \ ServiceManager-> doCreate() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:593
[2015年3月30日20:29:12欧洲/巴黎] PHP 17。 的Zend \的ServiceManager \ ServiceManager-> createFromFactory() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:633
[2015年3月30日20:29:12欧洲/巴黎] PHP 18。 的Zend \的ServiceManager \ ServiceManager-> createServiceViaCallback() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:1057
[2015年3月30日20:29:12欧洲/巴黎] PHP 19。 call_user_func:{C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:923}() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:923
[2015年3月30日20:29:12欧洲/巴黎] PHP 20。 专辑\模块 - >专辑{闭合}() C:\瓦帕\ WWW \快速启动\厂商\ zendframework \ zendframework \库\ Zend的\的ServiceManager \ ServiceManager.php:923
这是我的专辑\ src \ Album \ Controller \ AlbumController.php
namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class AlbumController extends AbstractActionController
{
protected $albumTable;
public function indexAction()
{
return new ViewModel(array(
'albums' => $this->getAlbumTable()->fetchAll(),
));
}
public function getAlbumTable()
{
echo "Made it";
if (!$this->albumTable) {
$sm = $this->getServiceLocator();
echo "Made it";
if($sm->has('Album\Model\AlbumTable'))
{
echo "FOUND Album\Model\AlbumTable";
$this->albumTable = $sm->get('Album\Model\AlbumTable');
}else{
echo "Could not find Album\Model\AlbumTable";
}
}
echo "Made it";
return $this->albumTable;
}
}
这是Album \ Module.php
namespace Album;
use Album\Model\Album;
use Album\Model\AlbumTable;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
class Module implements AutoloaderProviderInterface, ConfigProviderInterface
{
public function getAutoloaderConfig()
{
}
public function getConfig()
{
return include __DIR__ . '\config\module.config.php';
}
public function getServiceConfig()
{
return array(
'factories' => array(
'Album\Model\AlbumTable' => function($sm) {
// echo "inside ftn Album\Model\AlbumTable";
$tableGateway = $sm->get('AlbumTableGateway');
echo " Gate way GOOD";
$table = new AlbumTable($tableGateway);
echo "Table good";
return $table;
},
'AlbumTableGateway' => function ($sm) {
// echo "inside ftn AlbumTableGateway";
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
// echo "adapater good";
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Album());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
},
),
);
}
}
这是Album \ src \ Album \ Model \ AlbumTable.php
namespace Album\Model;
use Zend\Db\TableGateway\TableGateway;
//use Zend\Db\ResultSet\ResultSet;
class AlbumTable
{
protected $tableGateway;
public function __construct(TableGateway $tableGateway)
{
echo "inside construct of AlbumTable";
$this->tableGateway = $tableGateway;
}
我没有进入AlbumTable。我已经将它包含在Module.php中,并使用了类名和文件拼写正确。除非我的眼睛让我失望,否则我希望如此。
有谁能告诉我为什么会收到此错误?我从回声中输出的内容如下:
制作它 做好了 FOUND Album \ Model \ AlbumTable 门道好
答案 0 :(得分:1)
在使用深入教程搜索我自己问题的答案时,我会在 Album \ Module.php 中看到您编写以下内容的位置:
return include __DIR__ . '/config/module.config.php';
当我使用这些斜杠,并重新加载索引页面时,我得到一个空白页面。如果我更改斜杠以匹配教程中指示的内容,请执行以下操作:
useref
然后索引页面按预期加载。您可能有其他错误,但我可以测试并确认。
答案 1 :(得分:0)
找不到类。如果您没有使用composer(或其他一些自动加载方法),则需要在getAutoloaderConfig
中返回正确的配置,以将模块的命名空间添加到默认的Zend\Loader\StandardAutoloader
。
public function getAutoloaderConfig()
{
return [
'Zend\Loader\StandardAutoloader' => [
'namespaces' => [
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
],
],
];
}
答案 2 :(得分:0)
我遇到了同样的问题。在我的情况下,这是因为我没有在Module / Album / Module.php中粘贴以下行:
use Album\Model\Album;
因为教程中没有以黄色突出显示。
你需要那条线!