Php 在Zend Framework 2中为同一命名空间使用两个不同的目录-如何?

Php 在Zend Framework 2中为同一命名空间使用两个不同的目录-如何?,php,namespaces,zend-framework2,propel,autoload,Php,Namespaces,Zend Framework2,Propel,Autoload,我有ZF2模块,同时我使用托管在根目录/生成类中的Prope泛型模型。我可以让它们共享相同的名称空间吗?比如书店等等 从Zend\Loader\StandardAutoloader我看到: public function registerNamespace($namespace, $directory) { $namespace = rtrim($namespace, self::NS_SEPARATOR) . self::NS_SEPARATOR; $this->name

我有ZF2模块,同时我使用托管在
根目录/生成类中的Prope泛型模型。我可以让它们共享相同的名称空间吗?比如
书店
等等

Zend\Loader\StandardAutoloader
我看到:

public function registerNamespace($namespace, $directory)
{
    $namespace = rtrim($namespace, self::NS_SEPARATOR) . self::NS_SEPARATOR;
    $this->namespaces[$namespace] = $this->normalizeDirectory($directory);
    return $this;
}
因此,如果我在
Module.php
中提供两个目录,最后一个将占上风

还有:

public function setFallbackAutoloader($flag)
{
    $this->fallbackAutoloaderFlag = (bool) $flag;
    return $this;
}

我可以求助于它吗?我如何利用这个选项?还有其他(更好的)选择吗?

我不会将我的模型直接放在
/your application/root
中。这将违反ZF2推荐的目录脚手架。相反,我将创建一个
/FooModule/src/FooModule/Model
目录,并使用Model类中的
名称空间FooModule\Model
名称空间定义将我的所有模型放在此文件夹中

另一个细节是;试图为同一名称空间指向两个不同的目录绝对是个坏主意。这将与许多开源库和框架相抵触,包括严重依赖于此标准的Zend Framework 2

我会从另一个角度看待这个问题。只需问:为什么我需要将一个名称空间指向两个不同的目录

我想实际上你指的是领域实体“推进生成模型”。如果这是正确的(我的意思是
书店
),那么它是一个模型,而不是一个模型。你可能还想读书

因此,您可以尝试在
应用程序
(或其他)ZF2模块中创建一个
实体
名称空间,并在其中的子名称空间下编写实体类。这是完全正确的。例如:

Application\src\Entity\Bookstore.php - namespace is Application\Entity
Application\src\Entity\Book.php - namespace is Application\Entity
Application\src\Entity\Author.php - namespace is Application\Entity
或者这也是一个有效的场景(书店是一个模块):


在这两个示例场景中,
Book.php
Author.php
是您自动生成的域实体,它们共享相同的名称空间,同时不会与ZF2或PSR-4自动加载机制冲突。

thnx!我使用Prope的时间很少,所以在找不到任何配置选项来更改输出的目标文件夹后,我决定通过自动加载“black magic”将“symlink”生成的类转换为ZF2目录脚手架。到目前为止,这就是埃罗纽斯。幸运的是,有一个很棒的
[--output dir=“…”]
选项受命令行
推进模型:build
顺便说一句,ZF2支持一个模块的多个名称空间,因此-它不应该分别是Application/src/**Application**/Entity/Book.php和Bookstore/src/**Bookstore**/Entity/Book.php吗?
Bookstore\src\Entity\Book.php - namespace is Bookstore\Entity
Bookstore\src\Entity\Author.php - namespace is Bookstore\Entity