微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用composer,gulp和travis的PHP网站的目录结构

我正在找出PHP网站的目录结构.

网站将使用:

>一个非常基本的PHP MVC框架(即MinimalMVC,但是我正在寻找一个通用的解决方案,所以框架可能会被忽略)
>作曲家管理PHP依赖
> SCSS的造型
> gulp来编译SCSS(用于dev build),并且还可以将JS和CSS输出进行缩小并连接起来,并且缩小图像等(仅用于部署构建)
> Travis CI为CI的东西

所以经过很多的思考和规划,并且考虑到我想出的各种目录结构的问题,我仍然找不到符合我的标准的东西:

gulp deploy应该能够生成一个部署文件夹,当它放在一个Apache服务器上的一个/ var / www / html /目录下时,应该是Just WorkTM

Note: MinimalMVC (and also CodeIgniter and other similar frameworks) require their index.PHP file in the root directory,with an app and sys folder in the same directory

>由于PHP从来没有真正由构建过程处理,所以如果不必要的将src / ** / *.PHP文件复制到像build / ** / *这样的文件,PHP就可以避免.基本上,PHP部分不会保留gulp,我宁愿保持不受gulp的影响.

现在,我的想法有点混乱,因为我一直在想这个太多了,所以原谅我这个问题也有点乱,但基本的问题是,目录结构应该如何看?

一个主意:

.
|-- composer.json
|-- gulpfile.js
|-- package.json
|-- src
|   |-- app
|   |   |-- controllers
|   |   |-- models
|   |   `-- <other_framework_stuff>
|   |-- assets
|   |   |-- css
|   |   |-- img
|   |   |-- js
|   |   `-- raw
|   |       `-- scss
|   |-- index.PHP
|   `-- sys
|       `-- <framework_stuff>
|-- test
`-- vendor
    `-- <composer_stuff>

在这种结构中,开发人员只能在/ src目录下工作. SCSS从/ src / assets / raw / scss /编译到src / assets / css.这样,PHP仍然从构建过程中删除.当尝试生成部署目录时,src文件夹被复制,/ src / assets / raw /(所以no / build / assets / raw)目录不存在,并且生产/部署准备好的CSS,JS和映像在/ build / assets /中找到.

这个解决方案的第一个问题是奇怪的src / assets / raw目录,这似乎是丑陋的imho.第二个问题是/ vendor目录.这意味着PHP从外部src引用东西.所以如果/src/index.PHP正在处理它,它将包括../vendor/autoload.PHP.那么这意味着相同的代码被复制到/build/index.PHP.然后/ build /将不会运行,只需将其删除到/ var / www / html,除非供应商在/ var / www这似乎很奇怪.

有很多的,我想其他的东西,但所有的看起来丑陋某种方式或其他.为了避免这个问题太久,我会停在这里.

请帮助.我应该把供应商放在/ src /在composer.json中使用vendor-dir吗? (我知道,eww.)我应该使用什么样的目录结构?

解决方法

我同意以上Korri的评论,因为您可以从现有框架中获益.

就个人而言,这种目录结构对我来说是正确的.

.
|-- composer.json
|-- gulpfile.js
|-- package.json
|-- changelog.md
|-- readme.md
|-- /src (This is the API code that *I'm* responsible for,and that I *own*.).
|   |-- /app
|   |   |-- /controllers
|   |   |-- /models
|   |   `-- <other_framework_stuff>
|   /public (Keeping this outside of the src dir,means that you can give this to your front-end devs without needing to have the entire codebase).
|   |   |-- /styles
|   |   |-- /images
|   |   |-- /js
|   /config (Put all configuration files outside of the src scope,so you can keep it outside of source control)
|   /build (CI build related configuration)
|   |   |--PHPcs.xml
|   |   |--phpdocx.xml
|-- /tests (separating out your tests in this way can help you run tests separately,more easily)
|   |   |--acceptance
|   |   |--integration
|   |   |--unit
|-- /vendor (Depenedencies installed via Composer)

真的,没有社区正确回答你的问题.正确的答案是针对您的业务,您所在的团队以及项目本身.

我不会把/ vendor目录放在你的/ src目录下,因为你不拥有它.您对项目依赖关系中代码的更改不负任何责任,因此它应该保留在您自己的范围之外.

随着PSR-4自动加载,您的目录结构确实并不重要,可以随时更改,并且不会对您的代码造成任何影响.所以,实验,看看什么感觉适合你.

原文地址:https://www.jb51.cc/js/153501.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐