2012-03-29 86 views
0

使用自动加载器在尝试使用App\Model\Test时加载root/app/model/test.php是否好?通过这种方式,每个班级都应该按照其名称空间进行组织。Autoloader将名称空间转换为文件夹路径

这是一个好方法吗?如果不是,为什么?你会建议什么?

我应该定义一个特定的数组namespace => path,以确保我们不会加载意外的文件吗?这样我就必须设置每次像$map['App\Model\Test'] = 'root/app/model/test';这样的事情,这基本上会删除自动加载器的所有乐趣。不是吗?

回答

1
  1. 它是OOP
  2. 使用
  3. 通常自动加载速度更快,当他们有一类映射($map)注入到他们,而“标准”的做法。这是因为它们不需要通过包含路径来查找带有实例化类的文件。为它们提供一个绝对的文件名,并且将它们从包含路径中分离出来。提供$map还允许您以另一种方式组织您的课程(而不仅仅是基于文件系统的命名)。除此之外,还有一些类图生成器可以在你实际实现之前运行,而不必在每次重命名或移动某个类时手动重做。然而,在开发过程中,使用标准的自动加载逻辑(没有classmaps)会更方便,因为保持同步文件和其中声明的类可能非常繁琐,而且与开发本身无关。

减少样板代码的数量不是自动加载器的唯一目的:您加载只有实际需要在你的代码的类声明

  • ;不是全部或部分声明;只有那些使用
  • 它确保您的include_oncerequire_once在对于类发生在自动加载
  • 你的类不注重加载文件;他们专注于他们的功能