gpt4 book ai didi

namespaces - 如何使用基于命名空间的自动加载将库包含到 Zend Framework 2 应用程序中?

转载 作者:行者123 更新时间:2023-12-04 16:51:05 25 4
gpt4 key购买 nike

我创建了一个子文件夹 MyNamespace/vendor/ (它是自己库的正确位置吗?)并且想要使用类似 MyNamespace\Mvc\Router\MyCustomRouter 的类在我的应用程序中。如何将此库包含在基于命名空间的自动加载中?

最佳答案

除了 Rob 的回答之外,还有一些其他方法可以自动加载自定义库

首先,确保您的文件夹结构符合 psr0

示例中使用的神话般的 psr0 兼容 MyNamespace 库的典型结构

vendor/
MyNamespace/
lib/
MyNamespace/
FooClass.php
BarClass.php

使用 getAutoloaderConfig 从 Module.php 文件中包含
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
),
);
}

直接在 index.php使用 AutoloaderFactory配置 StandardAutoloader
// Setup autoloading
require 'init_autoloader.php';

Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../vendor/MyNamespace/lib/MyNamespace',
),
)
));

你甚至可以在 ./config/autoload/文件中做同样的事情
<?php    
// file ./config/autoload/namespaces.local.php

Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
)
));

包含您的库的另一个替代方法是编辑 vendor/composer/autoload_namespaces.php
<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'MyNamespace\\' => $vendorDir . '/MyNamespace/lib/',
);

关于namespaces - 如何使用基于命名空间的自动加载将库包含到 Zend Framework 2 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15662471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com