Я мигрирую проект с Zend Framework 1.4 на 2.4, у меня есть класс в «vendor / custom / classes / User.php»
<?php
namespace Classes;
use Zend\Db\TableGateway\TableGateway;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\Db\Adapter\Adapter;
class User
{
public function getItemById($id)
{
//$config = $this->getServiceLocator()->get('config');
//This only work in controller
$configs = array();
$adapter = new Adapter($configs);$projectTable = new TableGateway('project', $adapter);
$rowset = $projectTable->select(array('type' => 'PHP'));
echo 'Projects of type PHP: ';
foreach ($rowset as $projectRow) {
echo $projectRow['name'] . PHP_EOL;
}
}
}
?>
Мне нужно загрузить объединенные конфигурации в мои файлы в «config / autoload», global.php и local.php. $config = $this->getServiceLocator()->get('config');
Может кто-нибудь подсказать мне, как я могу получить эти конфигурации из пользовательского класса. По сути, я пытаюсь написать набор классов, таких как «Пользователь», «Проект», «Клиент», вне моделей и использовать их во всех модулях, таких как CMS, Панель администратора, Веб-сайт. Ценю ваше руководство.
Подход может быть с использованием фабрики.
Вы создаете класс UserFactory implementing Zend\ServiceManager\FactoryInterface
, Этот класс будет иметь метод createService
с $serviceLocator
параметр. Вы используете этот сервисный локатор, чтобы получить ваши зависимости и передать их вашему User
учебный класс.
В вашем User
класс, вам нужно использовать контроллер, который принимает в качестве параметров зависимости, которые вам нужно передать ему
Поскольку прямого доступа к этим конфигурациям нет. Я написал константы с информацией о доступе к БД в локальных и глобальных файлах php в config / autoload и использовал их в своем классе.
class DBManager
{
protected $adapter ;
protected $connection ;
/**
* Constructor
*/
public function __construct()
{
$configs = array(
'hostname' => DB_SERVER_NAME,
'driver' => 'Pdo_Mysql',
'database' => DB_DATABASE_NAME,
'username' => DB_USER_NAME,
'password' => DB_PASSWORD ,
);
$this->adapter = new Adapter($configs);
}
}