如果Factory类跟Database,Object类不在一个文件夹,比如不在IMooc目录下,会怎么样? 比如index中引用factory的方式是IMooc/Factory::createDatabase,成功在IMooc下创建Database对象, 现在database类不在IMooc目录下了,怎么解决这个问题呢?是不是在IMooc/Factory::createDatabase外添加一个字符串替换?
不是呀,安装 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();
厉害了 我的哥