Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的项目结构_Php_Directory_Structure - Fatal编程技术网

PHP的项目结构

PHP的项目结构,php,directory,structure,Php,Directory,Structure,我是PHP新手,想知道PHP项目的目录结构。我有Java方面的经验,在Java方面,src包含Java源文件,WEB-INF包含lib,jsp页面。我们在PHP中有类似的标准目录结构吗? 我们在php中也有分层,就像在java中有分层一样(例如Web、服务、DAO层) 我浏览了几个链接。但每个人都给出了不同的答案 不确定我们是否能比较这两种语言。我只想坚持一些标准 提前谢谢。没有。PHP就是你对它的理解。它可以是非常简单的平面文件,也可以是您想要的任何文件 这就是说,有一些商定的编码标准,但没有

我是PHP新手,想知道PHP项目的目录结构。我有Java方面的经验,在Java方面,src包含Java源文件,WEB-INF包含lib,jsp页面。我们在PHP中有类似的标准目录结构吗? 我们在php中也有分层,就像在java中有分层一样(例如Web、服务、DAO层)

我浏览了几个链接。但每个人都给出了不同的答案

不确定我们是否能比较这两种语言。我只想坚持一些标准


提前谢谢。

没有。PHP就是你对它的理解。它可以是非常简单的平面文件,也可以是您想要的任何文件

这就是说,有一些商定的编码标准,但没有“执行”上述标准。它们被称为PSR(PHP标准推荐)。这里有一个背景:
您可以在此处逐个查看标准:

大多数主要框架都遵循这些标准,如果您打算使用其中一个标准,那么遵循流程可能会更容易

同样,每个框架、项目、插件、程序等都有不同的布局和不同的项目结构。常见的结构如下所示:

-framework_dir
-public_html
    -js
    -img
    -css
    -index.php
    -protected/private
        -controllers
        -models
        -views
        -etc
- build/
-- phpdox.xml
-- phpmd.xml
-- phpunit.dist.xml
- config/
- public/
-- .htaccess
-- index.php
-- assets/
- src/
-- Customer/
--- CustomerController.php
--- CustomerRepository.php
--- Customer.php
--- customer.routes.php
- tests/
- vendor/
composer.json
.gitignore
然后,他们使用
.htaccess
文件阻止对受保护目录的访问。同样,这只是我在几个框架中看到的常见表示。如果你在做一个私人项目,就用一些你觉得舒服的东西。每个框架都将为您提供不同的库或访问数据的方式。没有“层”,但每个框架都有处理不同区域(电子邮件、数据库、缓存、http、日志等)的对象。因为有几十种流行的方法,所以只有你自己才能找到适合你的哲学或项目的方法。观看几段5分钟的博客视频,看看jives是什么,然后进行几天的测试。如果你不喜欢,换一个

不幸的是(或不是?)你对PHP非常自由。这取决于你

这是我的结构:

framework/
controllers/             
models/
configs/
files/
templates/
themes/
tmp/
index.php
init.php
.htaccess

您可以通过.htaccess控制访问。

随着Composer的发明,人们现在有了一个中心位置来注册他们的项目供全世界使用,而其他人现在可以查看该代码库并看到相似之处

结果是:

简言之:

If a package has a root-level directory for ...
                            ... then it MUST be named:
command-line executables    bin/
configuration files         config/
documentation files         docs/
web server files            public/
other resource files        resources/
PHP source code             src/
test code                   tests/
本标准未就
src
public
下必须存在哪些目录提出任何进一步建议

在这些目录中组织PHP源文件的任务仍然取决于您,但有一些建议我同意:要么按类型排序(控制器、实体、服务),要么按功能排序(用户、登录、购物车、目录、文章、注释)——后者将属于某个功能的所有代码保留在目录中(或少数子目录),这通常似乎是更好的文件组织


当按类型组织时,您会发现自己经常在目录之间跳转,而且您对代码的内容也没有很好的了解-您总是有“Controller”,但很少有“StampCollection”。

我倾向于在后端项目中使用基于功能的文件夹结构。 每个功能文件夹都有自己的控制器、管理器和路由文件。这对于api-后端非常有效。它看起来像

例如,我们有一个带有CustomerController、CustomerRepository、CustomerRoutes等的Customer功能

我的文件夹结构如下所示:

-framework_dir
-public_html
    -js
    -img
    -css
    -index.php
    -protected/private
        -controllers
        -models
        -views
        -etc
- build/
-- phpdox.xml
-- phpmd.xml
-- phpunit.dist.xml
- config/
- public/
-- .htaccess
-- index.php
-- assets/
- src/
-- Customer/
--- CustomerController.php
--- CustomerRepository.php
--- Customer.php
--- customer.routes.php
- tests/
- vendor/
composer.json
.gitignore

对于一个库,我使用以下结构…另外我还包括了我还没有使用的建议

目前,我只在根文件中使用了
composer.json
README.md
src
。但当我说到这一点时,我可能会使用我所描述的其他文件

我绝对不认为这是“正确的”。这种设置之所以有效,是因为我在每个请求上都有一个php路由器。使用
.htaccess
,您可以将
.css
文件路由到
/src/Style/requested\u file.css

我希望清理项目根目录,我已经做到了。没有我所知道的用于目录结构的标准。我本来希望会有一些标准,但是…不太可能,关于目录结构


谢谢你的帮助。我按照你建议的方式做了。我有一个数据库属性文件,我想从php代码中读取,并希望限制用户通过浏览器访问。你能给我一个示例.htaccess文件,我可以在其中进行更改。我试过了,但它给出了错误me内部服务器错误。CI脚本是什么?@NBhargav您指的是什么CI脚本?如果我想与PHP项目持续集成,您如何维护CI脚本文件夹。您将其保存在何处以及如何保存?@NBhargav什么是“CI脚本”?您指的是“travis CI”吗?可以是任何CI。我正在使用Shippable。存储CI脚本的最佳方式是什么?目前,我正在将所有CI脚本保存在CI中/放在项目的根目录中。有什么建议吗?我在这里找到了一个解决方案: