什么';PHP项目中外部库的最佳位置是哪里?
在PHP项目中查找外部库的最佳实践是什么(例如,GoogleMapAPI、Recaptcha等)?现在我在/lib或其子目录中拥有所有类,并且使用Zend约定进行命名(例如,类Foo位于/lib/Foo.php中,类Db_Bar位于/lib/Db/Bar.php中) 但是我应该隔离第三方的东西吗?如果是,怎么做?哪里内/库?在别处注意:自动加载这些类不是问题,因为它们总是在需要的地方被显式地包括/需要(与我自己的类不同)什么';PHP项目中外部库的最佳位置是哪里?,php,Php,在PHP项目中查找外部库的最佳实践是什么(例如,GoogleMapAPI、Recaptcha等)?现在我在/lib或其子目录中拥有所有类,并且使用Zend约定进行命名(例如,类Foo位于/lib/Foo.php中,类Db_Bar位于/lib/Db/Bar.php中) 但是我应该隔离第三方的东西吗?如果是,怎么做?哪里内/库?在别处注意:自动加载这些类不是问题,因为它们总是在需要的地方被显式地包括/需要(与我自己的类不同) 谢谢 无法与Linux最佳实践保持一致,例如/usr/share与每个模块
谢谢 无法与Linux最佳实践保持一致,例如/usr/share与每个模块类型的lib层次结构保持一致?您的思路正确,将所有内容都放在
/lib
中。我建议将每个库分离到它自己的子文件夹中,因为许多库都有多个文件。还有/lib/googlemaps
,/lib/recaptcha
等等
如果您仍然不确定,也许可以看看一些框架,比如CodeIgniter。Joomla使用我上面描述的系统。他们甚至为整个joomla框架提供了/lib/joomla
没必要想太多。只要很容易找到并包含库,就不用担心。如果不想将文件存储在服务器上,您可以将文件的名称和位置保存在数据库中。然后,您可以使用存储的信息根据需要加载它们。此外,这还可以防止您在需要进行更改时不得不更改许多网页。这通常是我组织应用程序所遵循的结构:
myproject/
myproject/app
myproject/app/controllers
myproject/app/views
myproject/app/models
myproject/config
myproject/log
myproject/lib
myproject/lib/external
myproject/lib/external/Zend -> symlinked to -> /whatever/libraries/zend-1.x.x/
myproject/lib/external/GoogleMaps/ -> symlinked to -> /whatever/libraries/gmaps-1.x/
myproject/lib/core (to my application)
myproject/lib/core/Adapters/Rest.inc
myproject/lib/core/Facades/SimpleTwitterApi.inc
....etc....
使用lib/external很有帮助,因为我通常会将不同版本的库(Zend等)进行符号链接,更新它们会变得更容易管理。另外,如果您使用版本控制系统,那么很有意思的一点是查看lib/core和lib/external中有多少提交。此外,您可以使用phploc之类的工具来查看大部分代码是在外部库中还是在核心中
顺便说一句,很高兴听到自动加载不是问题,您可以根据需要明确包括/需要文件:)。。。或者有一个“聪明”的自动加载程序,即自动加载类的配置文件。@DisgludedCoat谢谢!这与我所做的非常接近。我通常会包含我正在使用的库的特定版本,而不是链接到它们以避免版本不匹配,但当然还有其他方法来处理。