我已经编写了我自己的通用PHP库一段时间了,我正在考虑如何组织目录结构,但我想在我正式化库的目录结构之前得到人们的想法.
这是我到目前为止:https: //github.com/homer6/altumo/tree/master/source/php
我以为我可以"按主题"或"按类别"进行.到目前为止,我只能想到一个我喜欢"按类别"的例子:Boost http://www.boost.org/doc/libs/1_46_1/?view=categorized
此外,Qt是按模块组织的,但我认为它有点乱,因为所有内容都有点填入QtCore http://qt-project.org/doc/qt-5/qtmodules.html
有任何想法吗?
提前致谢.
更新:我发现了一本非常好的书,它向我展示了许多伟大的图书馆设计惯例:http://www.apibook.com/blog/
更新:我发现了一篇有趣的文章提到了代码组织(http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html).在底部,它说:"你的代码树会是什么样子?他希望用这些词来形容它:简单,实用,优雅,正交,可组合.这是理想的,现实有点不同."
Joa*_*les 18
首先,选择的结构是一个妥协的决定,这意味着你必须根据你的目的处理和优先考虑某些方面.您可以遵循一些分组标准,例如:
你应该使用很多标准,但始终牢记KISS原则.您可以在统一软件开发过程(Ivar Jacobson等人)等书籍中搜索包管理,我希望这可能会有所帮助.
由于它是专用于解决通用问题或提供通用功能接口的多用途库,因此最好具有subject
可以是DataType/Technology/Language/Protocol等的结构,如下所示:
+ Http
- request
- response
+ util
- status_codes
+ Html
- Validator
+ Form
- UploadFile
+ Tag
+ JavaScript
- JSON
+ Ajax
+ XML
- Reader
- Writer
- Parser
+ DataType
- Array
- Integer
- String
- Double
- Float
+ util
- datatypes_cast_lib
Run Code Online (Sandbox Code Playgroud)
最重要的是我们有:
Http.request
将成为执行Http请求的接口Html.Form.UploadFile
将为开发人员提供创建上传文件表单的功能请注意,这status_codes
仍在util
在Http
.每个子库都可以有自己的util功能,比如DataType
lib可能需要datatype_cast_lib才能知道如何处理数据类型.
这种图书馆组织方式大多类似于PECL的组织化
好问题,BTW!我经常问自己同样的问题.多年来我一直在组织和重组我的目录结构.这真的取决于项目.我已根据你在这里提供的结构调整了上面的结构.
我建议您查看最近的两个 php 5.3 框架Symfony2和Lithium 中的组织方式。
他们背后的核心开发人员(与其他主要框架开发人员和 php 名人一起)积极定义标准的 php 5.3 命名约定,以便他们各自的组件可以相互使用,Zend 和其他可能遵循相同约定的库/框架:
http://groups.google.com/group/php-standards/web/php-coding-standard
在这两种情况下,bundle/libraries 都是一等公民,并且在组织它们时两者遵循相似的模式。
特别是 Lithium 内核本身就是一个库。它的组织方式如下:
$ ls
LICENSE.txt analysis core g11n security template tests
action console data net storage test util
Run Code Online (Sandbox Code Playgroud)
(我倾向于发现 Symfony 2 有点混乱/预测性较差,但这只是我自己的看法。)
归档时间: |
|
查看次数: |
4273 次 |
最近记录: |