php框架 Yaf集成zendframework2, zf2的orm 可以作为独立模块用到yaf中,而且zf2 composer service manger cacheStorage 都可以集成到yaf中。
一:publicindex.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 模块组件
vendorZF2 见页尾下载包
三:更改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('ZendSessionSessionManager');
}
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 ZendDbAdapterAdapter
*/
public function getDbAdapter() {
return Yaf_Registry::get('ServiceManager')->get('ZendDbAdapterAdapter');
}
/**
* storage
* @return ZendCacheStorageStorageInterface
*/
protected function getStorage() {
return Yaf_Registry::get('ServiceManager')->get('ZendCacheStorageStorageInterface');
}
/**
* logger
* @return ZendLogZendLogLogger
*/
protected function getLogger() {
return Yaf_Registry::get('ServiceManager')->get('ZendLogLogger');
}
}
这样你访问public下的index.php 会输出hello word字样