该库不需要与magento集成,它主要是与API通信的包装器.
我希望能够使用此库并在控制器或模型中进行这些API调用.
我在哪里可以放图书馆?如何将它们添加到自动装带器?
在当前稳定版本的Zend Framework(1.11)中,是否可以使用PHP命名空间处理应用程序类?
Application\Form\Abc instead of Application_Form_Abc
Application\Model\Xyz instead of Application_Model_Xyz
etc.
Run Code Online (Sandbox Code Playgroud)
从v1.10开始,ZF支持自动加载命名空间,并且在包含命名空间库时它工作正常,但在尝试使用应用程序类执行相同的工作时我没有成功.
我刚刚开始研究Zend Framework 2(并且是ZF的新手),在用户指南中,他们在添加新模块时使用自动加载.但是,我觉得对于一个新秀来说这个解释非常具有挑战性.他们Module.php在模块目录中添加一个文件,其中包含以下代码:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
现在我做了一些挖掘,试图找出这个自动加载的全部内容.据我所知,自动加载使用spl_autoload_register()并且是一种避免require_once()在代码中无处不在的方法.因此,当尝试使用未定义的类时,autoload()将运行已注册的方法,该方法仅执行数组查找,并且如果已添加,则包括如下所示的文件.
// Zend/Loader/ClassMapAutoloader.php
public function autoload($class)
{
if (isset($this->map[$class])) {
require_once $this->map[$class];
}
}
Run Code Online (Sandbox Code Playgroud)
由于性能,这似乎很聪明.我希望我刚才写的是正确的.基于此,我试图getAutoloaderConfig()从第一个代码片段中弄清楚发生了什么,但我很困惑.看起来好像使用了这个方法返回的数组AutoloaderFactory::factory(),但我不确定是出于什么目的.使用选项实例化自动加载器,但确实如此,我不确定.我想数组的第二个条目指定在哪里找到模块命名空间的源文件 - 至少这是我的猜测.然而,我第一个条目并不确定.在用户指南中,它说明如下:
在开发过程中,我们不需要通过类图加载文件,因此我们为类图自动加载器提供了一个空数组.
该文件只返回一个空数组.我不确定这个ClassMapAutoloader的目的是什么.
对不起,如果我的观点不清楚; 基本上我试图弄清楚发生了什么getAutoloaderConfig()以及mymodule/autoload_classmap.php用于什么.如果有人能够对此有所了解,那将非常感激!
我在这里定义了一个类库.../projectname/library/Me/Myclass.php定义如下:
<?php
class Me_Myclass{
}
?>
Run Code Online (Sandbox Code Playgroud)
我有以下引导程序:
<?php
/**
* Application bootstrap
*
* @uses Zend_Application_Bootstrap_Bootstrap
*/
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
/**
* Bootstrap autoloader for application resources
*
* @return Zend_Application_Module_Autoloader
*/
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Default',
'basePath' => dirname(__FILE__),
));
$autoloader->registerNamespace('Me_');
return $autoloader;
}
/**
* Bootstrap the view doctype
*
* @return void
*/
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
/**
* Bootstrap registry and store …Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习Zend Framework,但我的模块有问题.请看下面的错误.我还不知道还有什么可以告诉您更多信息.请让我知道我需要向您展示解决问题的方法.
致命错误:未捕获的异常'Zend\Loader\Exception\InvalidArgumentException
Fatal error: Uncaught exception
'Zend\Loader\Exception\InvalidArgumentException' with message 'Map
file provided does not exist. Map file: "C:\Program
Files\xampp\htdocs\zend_intro\module\Album/autoload_classmap.php"' in
C:\Program
Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Loader\ClassMapAutoloader.php:175
Stack trace: #0 C:\Program
Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Loader\ClassMapAutoloader.php(85):
Zend\Loader\ClassMapAutoloader->loadMapFromFile('C:\Program File...')
#1 C:\Program Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Loader\ClassMapAutoloader.php(121):
Zend\Loader\ClassMapAutoloader->registerAutoloadMap('C:\Program
File...') #2 C:\Program
Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Loader\ClassMapAutoloader.php(64):
Zend\Loader\ClassMapAutoloader->registerAutoloadMaps(Array) #3
C:\Program
Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Lo
in C:\Program
Files\xampp\htdocs\zend_intro\vendor\zendframework\zendframework\library\Zend\Loader\ClassMapAutoloader.php
on line 175
当我不使用MVC框架时,如何自动加载zend框架类?
我有一个名为'olo'的模块,可以处理我们所有的在线订购.
现在我已经制作了一个名为"olosec"的新模块,因为我希望制作一个不同的版本,稍微改变流程,并在某些控制器中进行其他一些更改.
我是否可以使用'olo'中的控制器在'olosec'中扩展控制器?
截至目前我已经尝试过了
class Olosec_CartController extends Olo_CartController
Run Code Online (Sandbox Code Playgroud)
这引发了一个错误
Warning: include_once(Olo/CartController.php): failed to open stream:
No such file or directory in /httpdocs/library/Zend/Loader.php on line 146 Warning:
include_once(): Failed opening 'Olo/CartController.php' for inclusion.
bla bla bla (include path) bla bla bla
Run Code Online (Sandbox Code Playgroud)
我的目录结构是这样的(谢谢tree \F \A和EditPlus ++)
+---application
| +---views
| | +---scripts
| | +---layouts
| | | +---default
| | | +---admin
| | +---languages
| | +---helpers
| +---modules
| | +---admin
| | +---mobile
| …Run Code Online (Sandbox Code Playgroud) 我很久以前就使用过PHP5,目前我正在尝试更新我的知识,并在Zend Framework 2和Smarty 3的知识中为可能的项目增加知识.
我目前正试图弄清楚如何使用Smarty 3作为Zend Framework 2的替代/补充.
我可以通过Google在此主题上找到的所有内容:
可有人请向我解释,就好像我是9,使用Zend主干应用程序作为我的出发点:
在什么目录/文件夹(使用完全限定的路径),我应该解压缩Smarty-3.1.12包?
我需要创建哪些类,它们究竟需要包含哪些类,以及它们应存储在何处?
需要修改哪些文件,以及如何使Smarty可以在我的模块中查看?
参考上面创建的类,如何从AZ中使用这些类(例如,包括在适当的类中,分配值,创建输出)?
我有以下目录结构:
modules/
api/
controllers/
ApiController.php
InventoryController.php
OtherController.php
Run Code Online (Sandbox Code Playgroud)
init()方法在多个控制器中很常见,所以我想将它重构为父控制器类,例如:
class Api_ApiController extends Zend_Controller_Action
{
public function init()
{
// common code
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试:
class Api_InventoryController extends Api_ApiController
Run Code Online (Sandbox Code Playgroud)
我明白了:
致命错误:第4行的/application/modules/api/controllers/InventoryController.php中找不到类'Api_ApiController'
为什么Zend Framework没有将Api_ApiController映射到modules/api/controllers/ApiController.php?
我已经找到了解决这个问题的方法,将ApiController放在库中并注册命名空间,但这对我来说似乎是个黑客攻击.
我的phpunit配置中有一个运行引导程序的引导程序Zend\Loader\StandardAutoloader.php.我可以通过添加PHPUnit代码覆盖来忽略它
<filter>
<blacklist>
<directory suffix=".php">/absolute/path/to/zf</directory>
</blacklist>
</filter>
Run Code Online (Sandbox Code Playgroud)
到PHPUnit配置XML文件.但我必须指定绝对路径.我希望它是一个相对路径,但PHPUnit并没有忽略代码覆盖中的Zend文件夹.当我在家工作时,我不想添加不同的位置,我不希望其他开发人员添加自己的路径.Zend Framework在php.ini include_path设置中,但这不起作用:
<filter>
<blacklist>
<directory suffix=".php">./Zend</directory>
</blacklist>
</filter>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
zend-autoloader ×10
php ×8
autoload ×2
include ×1
magento ×1
magento-1.7 ×1
module ×1
namespaces ×1
phpunit ×1
smarty3 ×1