在 ZF2 的项目中,我正在创建我的自定义库供应商/TestVendor/TestLibrary/。在这个库中,我想创建 2 个类:TestClass 和 TestClassTable。TestClass 应该实例化我的自定义对象,TestClassTable 应该处理数据库和表。而且我需要在TestClass类表中使用DBAdapter来访问数据库和表。
代码如下所示:
在模块索引控制器中,我从 TestClass 创建对象
类 TestController 扩展 AbstractActionController {
$TestObject = $this->getServiceLocator()->get('TestClass');
}
在我的自定义类 vendor/TestVendor/TestLibrary/TestClass.php 我创建了一些方法:
命名空间 TestVendor\TestLibrary;
类测试类{
protected $Id;
protected $Name;
function __construct(){}
public function doMethodOne() {
$TestClassTable = new TestClassTable();
$this->Id = 1;
$TestObjectRow = $TestClassTable->getTestObjectById($this->Id);
$this->Name = $TestObjectRow['Name'];
return $this;
}
}
在 TestClassTable 类中我想访问数据库
命名空间 TestVendor\TestLibrary;
使用 Zend\Db\TableGateway\AbstractTableGateway;
类 TestClassTable 扩展 AbstractTableGateway {
public function __construct() {
$this->table = 'table_name';
$this->adapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
}
public function getTestObjectById($Id) {
$Id = (int) $Id;
$rowset = $this->select(array('id' => $Id));
$row = $rowset->current();
return $row;
}
}
当然,尝试在我的类 TestClassTable 中访问服务定位器或数据库适配器会带来错误。
看来我的方法是错误的。
非常感谢。