作者:渭南电信贺平 | 来源:互联网 | 2018-07-15 18:31
本文章来为各位介绍php中Yaf框架集成zendframework2的例子,有兴趣的可以和一聚教程小编一起来看看,具体操作如下。
php框架 Yaf集成zendframework2, zf2的orm 可以作为独立模块用到yaf中,而且zf2 composer service manger cacheStorage 都可以集成到yaf中。
一:public\index.php 加入composer
chdir(dirname(__DIR__));
// Decline static file requests 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配置文件
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= "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测试
getDbAdapter();
$table = new TableGateway('zt_user', $adapter);
$entities = $table->select();
foreach ($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字样