本文章来为各位介绍php中Yaf框架集成zendframework2的例子,有兴趣的可以和php粉丝网教程小编一起来看看,具体操作如下.
php框架 Yaf集成zendframework2,zf2的orm 可以作为独立模块用到yaf中,而且zf2 composer service manger cacheStorage 都可以集成到yaf中.
一:public/index.php 加入composer
- chdir(dirname(__DIR__));
- // Decline static file <a href="/tags.php/request/" target="_blank">request</a>s back to the PHP built-in webserver
- if (php_sapi_name() === 'cli-server' && is_file(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
- return false;
- }
- // Setup autoloading
- require 'init_autoloader.php';
- // Define path to application directory
- define("APP_PATH", dirname(__DIR__));
- // Create application, bootstrap, and run
- $app = new Yaf_Application(APP_PATH . "/conf/application.ini");
- $app->bootstrap()->run();
根目录 存放 init_autoloader.php
二:导入ZF2 模块组件
vendor/ZF2 见页尾下载包
三:更改bootstrap配置文件
- <?php
- use Zend/ServiceManager/ServiceManager;
- use Zend/Mvc/Service/ServiceManagerConfig;
- use Zend/ModuleManager/Listener/ConfigListener;
- use Zend/ModuleManager/Listener/ListenerOptions;
- use Zend/ModuleManager/ModuleEvent;
- class Bootstrap extends Yaf_Bootstrap_Abstract {
- public function _initConfig() {
- $config = Yaf_Application::app()->getConfig();
- Yaf_Registry::set("config", $config);
- }
- public function _initServiceManager() {
- $configuration = require APP_PATH . '/conf/application.config.php';
- $smConfig = isset($configuration['service_manager']) ? $configuration['service_manager'] : array();
- $serviceManager = new ServiceManager(new ServiceManagerConfig($smConfig));
- $serviceManager->setService('ApplicationConfig', $configuration);
- $configListener = new ConfigListener(new ListenerOptions($configuration['module_listener_options']));
- // If not found cache, merge config
- if (!$configListener->getMergedConfig(false)) $configListener->onMergeConfig(new ModuleEvent);
- // If enabled, update the config cache
- if ($configListener->getOptions()->getConfigCacheEnabled() &&
- !file_exists($configListener->getOptions()->getConfigCacheFile())) {
- //echo "debug";
- $configFile = $configListener->getOptions()->getConfigCacheFile();
- $content = "<?php/nreturn " . var_export($configListener->getMergedConfig(false), 1) . ';';
- file_put_contents($configFile, $content);
- }
- $serviceManager->setService('config', $configListener->getMergedConfig(false));
- Yaf_Registry::set('ServiceManager', $serviceManager);
- }
- public function _initSessionManager() {
- Yaf_Registry::get('ServiceManager')->get('Zend/Session/SessionManager');
- }
- public function _initPlugin(Yaf_Dispatcher $dispatcher) {
- $user = new UserPlugin();
- $dispatcher->registerPlugin($user);
- }
- }
四:mvc测试
- <?php
- use Zend/Session/Container as SessionContainer;
- use Zend/Db/TableGateway/TableGateway;
- class IndexController extends Yaf_Controller_Abstract {
- public function indexAction() {
- $adapter = $this->getDbAdapter();
- $table = new TableGateway('zt_user', $adapter);
- $entities = $table-><a href="/tags.php/select/" target="_blank">select</a>();
- <a href="/tags.php/foreach/" target="_blank">foreach</a> ($entities as $entity) {
- var_dump($entity->username);
- }
- $cache = $this->getStorage();
- $cache->setItem('cache', 'cachedata');
- echo $cache->getItem('cache');
- $this->getLogger()->alert('log');
- $this->getView()->assign("content", "Hello World");
- }
- /**
- * db adapter
- * @return /Zend/Db/Adapter/Adapter
- */
- public function getDbAdapter() {
- return Yaf_Registry::get('ServiceManager')->get('Zend/Db/Adapter/Adapter');
- }
- /**
- * storage
- * @return /Zend/Cache/Storage/StorageInterface
- */
- protected function getStorage() {
- return Yaf_Registry::get('ServiceManager')->get('Zend/Cache/Storage/StorageInterface');
- }
- /**
- * logger
- * @return /Zend/Log/Zend/Log/Logger
- */
- protected function getLogger() {
- return Yaf_Registry::get('ServiceManager')->get('Zend/Log/Logger');
- }
- }
这样你访问public下的index.php 会输出hello word字样.
新闻热点
疑难解答