PHP的项目结构

jav*_*fan 22 php directory structure

我是PHP新手,想知道php项目的目录结构.我有Java和java的经验,我们有src包含java源文件,WEB-INF包含lib和jsp页面.我们在PHP中有任何类似的标准目录结构吗?我们也在php中进行分层,就像我们在java中有层(例如Web,Service,DAO层)

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

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

提前致谢.

Tim*_*ers 25

不.PHP是你的成就.它可以是非常简单的平面文件,也可以是你想要的.

话虽如此,有一些商定的编码标准,但没有"执行"所述标准.它们被称为PSR(PHP标准推荐).这里有一个背景知识:http://net.tutsplus.com/tutorials/php/psr-huh/
您可以在这里逐一查看标准:http://www.php-fig.org/psr/

大多数主要框架都遵循这些标准,如果您打算使用这些标准,可能更容易使用流程.

同样,每个框架,项目,插件,程序等都有不同的布局和不同的项目结构.一个常见的结构是这样的:

-framework_dir
-public_html
    -js
    -img
    -css
    -index.php
    -protected/private
        -controllers
        -models
        -views
        -etc
Run Code Online (Sandbox Code Playgroud)

然后,他们使用该.htaccess文件阻止访问受保护的目录.同样,这只是我在几个框架中看到的常见表示.如果您正在进行个人项目,只需使用对您来说舒适的东西.每个框架都会为您提供一个不同的库或方式来访问数据.没有"层",但每个框架都有处理不同区域的对象(电子邮件,数据库,缓存,http,日志等).因为有几十种受欢迎的产品,所以您可以根据自己的理念或项目找到合适的产品.观看一些5分钟的博客视频,看看是什么,然后给它试运行几天.如果您不喜欢它,请切换到另一个.


Sve*_*ven 5

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

结果是这样的:https : //github.com/php-pds/skeleton

简而言之:

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/
Run Code Online (Sandbox Code Playgroud)

对于在src或下必须存在哪些目录,该标准没有任何其他建议public。我建议在下面简单地使用一个名称空间src,并通过完全限定的类名来实现“模型”,“控制器”等的任何多样化,例如,如果决定拥有一个Projectname\Controller\WhateverController类,它将驻留在与PSR-4兼容的路径src/Controller/WhateverController.php,可通过Composer使用进行自动加载"autoload":{"psr-4":{"Projectname\\": "src"}}


Gud*_*gip 5

我倾向于为我的后端项目使用基于功能的文件夹结构。每个功能文件夹都有自己的控制器、管理器和路由文件。这适用于api后端。它看起来像https://blog.nikolaposa.in.rs/2017/01/16/on-structuring-php-projects/

例如,我们有一个带有 CustomerController、CustomerRepository、CustomerRoutes 的 Customer 特性。

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

- 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
Run Code Online (Sandbox Code Playgroud)