以前,我使用的是zend 1.x.我可以使用下面的代码自动加载zend类。
// autoload class from Zend Lib
require_once ABSPATH.'/classes/Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
try{
// database connection
$dbo = Zend_Db::factory('pdo_mysql', array(
'host' => DB_HOST,
'username' => DB_USER,
'password' => DB_PW,
'dbname' => DB_PREFIX.DB_NAME
));
$dbo->getConnection();
// save database adapter for easy usage in other classes
Zend_Db_Table::setDefaultAdapter($dbo);
Zend_Registry::set('db', $dbo);
}catch(Zend_Db_Adapter_Exception $e){
print $e;
//header("Location: http://www.google.com/error/");
}
我正在升级到zend 2,因为类可能更好。我可以知道如何自动加载它们吗?
答案 0 :(得分:2)
如果您只使用ZF2作为独立库而不使用完整的MVC框架,那么自动加载非常简单:
Zend
上有include_path
目录。spl_autoload_register
以下基本上是Zend\Loader\StandardAutoloader::loadClass()
在作为后备自动加载器时的作用:
spl_autoload_register(function($class) {
$f = stream_resolve_include_path(str_replace('\\', '/', $class) . '.php');
if ($f !== false) {
return include $f;
}
return false;
});
这将为所有类使用PSR-1自动加载机制,而不仅仅是Zend类。
或者,您可以执行以下操作:
require_once 'Zend/Loader/StandardAutoloader.php';
$autoloader = new Zend\Loader\StandardAutoloader(array(
'fallback_autoloader' => true,
));
$autoloader->register();
如上所述,这将将PSR-1自动加载应用于所有类。如果您只想为Zend类使用此机制,请传递'fallback_autoloader' => false
。
答案 1 :(得分:1)
您还可以通过Composer加载各个组件,然后只需在执行脚本的开头加入require 'vendor/autoload.php';
。
答案 2 :(得分:0)
我建议你研究ZF2提供的骨架应用程序, 我对ZF1了解不多,但据我所知ZF2有自己的自动加载机制, 关于自动加载,当您关注Skeleton Application时,您会注意到有一个 Config \ application.config.php 这是我们加载所有模块等的文件。作为示例我会在下面加载我的文件。就设置连接等而言,你会在它们下面找到相同的目录树,即“Config \ local或Config \ Global”。
<?php
return array(
// This should be an array of module namespaces used in the application.
'modules' => array(
'ZendDeveloperTools',
'DoctrineModule',
'DoctrineORMModule',
'Application',
'Administration',
'Account',
'Manufacturing',
'GridMain',
),
// These are various options for the listeners attached to the ModuleManager
'module_listener_options' => array(
'module_paths' => array(
'./module',
'./vendor',
),
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
),
);