问答详情
源自:5-3 [php]单例模式

Factory文件必须要与所创建对象的类文件同目录么?

如果Factory类跟Database,Object类不在一个文件夹,比如不在IMooc目录下,会怎么样? 比如index中引用factory的方式是IMooc/Factory::createDatabase,成功在IMooc下创建Database对象, 现在database类不在IMooc目录下了,怎么解决这个问题呢?是不是在IMooc/Factory::createDatabase外添加一个字符串替换?

提问者:frgo_03360772 2016-08-05 23:47

个回答

  • zZ爱吃菜
    2016-08-08 16:48:00
    已采纳

    不是呀,安装 PSR-0 设计模式,命名空间跟实际路径一样,你可以在 Factory 中通过命名空间实例化(new)不在 IMOOC 路径下的 Database 类的对象。

    // 假如 Database 类在 Lib 文件夹下

    Database 文件内容:

    namespace Lib;

    Factory文件内容:

    use Lib\Database;// 这步很重要,这样不在同一路径的 Database 也可以被实例了。
    function createDatabase(){    
        $db = new Database();
    }

    这样依旧可以通过工厂模式实例不在同一目录的数据库类

    $db =     IMOOC\Factory::createDatabase();


  • summesr
    2017-04-12 18:40:38

    厉害了 我的哥