【问题标题】:Best practise to include class in php在 php 中包含类的最佳实践
【发布时间】:2014-04-23 18:53:02
【问题描述】:

保存文件的最佳做法是什么

【问题讨论】:

  • 如果它是一个 php 文件,我会使用任何扩展,但 php。
  • 请告诉我你们在专业领域的最佳实践和推荐的方法
  • 了解FIG标准:php-fig.org
  • 使用.php.inc 不安全

标签: php oop


【解决方案1】:

有一些 PHP 使用 .inc 的例子。它没有任何意义,它只是一个文件扩展名。如果文件被设计为包含在其他 PHP 文件中,则使用 .inc 扩展名命名文件是某些人的惯例,但这只是惯例。

它确实有一个可能的缺点,即服务器通常未配置为将 .inc 文件解析为 php,因此如果该文件位于您的 Web 根目录中并且您的服务器以默认方式配置,则用户可以查看您的 php .inc 文件中的源代码直接访问 URL 是不安全的。

它唯一可能的优点是很容易识别哪些文件被用作包含。虽然简单地给它们一个 .php 扩展名并将它们放在一个包含文件夹中具有相同的效果,但没有上述缺点。

字体:What is .inc and why to use it?

【讨论】:

  • 是的,如果服务器在默认设置下会显示 inc 文件中的代码,那么无论如何只使用 php 扩展名很好
【解决方案2】:

几乎所有 PHP 编码标准都要求类文件与类同名且以 .php 结尾。

class Test {

}

转到Test.php

命名空间或“伪命名空间”将被展平为文件夹。意义

// pseudo namespace
class Foo_Test {

}

// "real" namespace
namespace Foo;

class Test {

}

转到Foo/Test.php

可以参考

由于历史原因,.inc 扩展仍然被部署。以前,有些人教导“保护” php 文件,这些文件旨在包含但不用于通过带有此扩展名的 url 调用。然后他们配置他们的 .htaccess 文件来拒绝对.inc 文件的请求。

我看到许多网络应用程序错过了保护的 .htaccess 部分,导致您可以通过浏览器获取源代码 (!)。

现代网络应用程序不这样做。整个源目录通常位于文档根目录下的文件夹中,因此无法访问,或者整个文件夹受 .htaccess 规则保护。可以通过浏览器访问的只有所谓的前端控制器。这更有意义。

【讨论】:

  • 但是我也可以做 class myClass{} 并保存它 myClass.ini 然后像 required 'myClass.ini' 一样调用这个类;
【解决方案3】:

使用.php 扩展名! 使用.inc 或您需要在httpd.conf(in apache) 中更改的任何其他扩展,例如

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php .inc

【讨论】:

    【解决方案4】:

    永远不要将 .inc 用于 php 代码,因为这将允许其他人通过请求您的类文件来查看您的代码(可能还有配置、数据库凭据等)

    您绝对应该阅读自动装载机的当前标准 PSR-4。它说明了构建代码的首选方式:

    https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-meta.md https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md

    基本上,您总是将文件命名为命名空间和类,如下所示:

    班级myThing 转到{prefix}/myThing.php

    myThing从命名空间Drawer转到{prefix}/Drawer/myThing.php

    myThing 从命名空间 Room\Drawer 转到 {prefix}/Room/Drawer/myThing.php

    等等

    如果您想知道,prefix 是您保存类的目录,它可能是任何东西:您的项目目录、您的模块目录、一些 includes 目录等

    【讨论】:

      【解决方案5】:

      我认为一个好的做法是,如果您在代码中有一个名为“MyThing”的类,则使用该名称和单词“class”来命名它。比如:

      class MyThing
      {
      
      
      }//END MYTHING
      

      将在文件中:

      /includes/MyThing.class.php
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-17
        • 2018-01-30
        • 1970-01-01
        • 2012-04-27
        • 2011-04-08
        • 1970-01-01
        • 2013-03-03
        • 2012-09-26
        相关资源
        最近更新 更多