【问题标题】:How Do You Clean up a PHP Project?如何清理 PHP 项目?
【发布时间】:2010-12-10 14:23:04
【问题描述】:

我一直在开发一个小型 php 应用程序(总共 400K)。但是在构建和学习的过程中,我有很多垃圾文件。

我没有做好我的工作并正确命名它们,即demo1.php 等...

有没有办法进行依赖性检查?还是只是删除、刷新和重复?然后在需要时取消删除?

【问题讨论】:

    标签: php dependencies


    【解决方案1】:

    听起来您需要从版本控制系统开始。如果您的项目已经搞砸了,那么您可能只需要硬着头皮手动清理它。

    【讨论】:

    • 我正在使用颠覆,但我仍然提交了我的测试文件。我想我必须手动完成。
    • @shaiss 你为什么要提交测试文件?如果您一遍又一遍地以不同的名称提交同一个文件,那么您就没有正确使用版本控制。
    • 不是同一个文件。 IE。我创建了 readini 并弄清楚了如何读取我们拥有的 ini 文件并提取值。然后我创建了 testEmp 并在那里做了一些测试。你说得对,我可能一开始就不应该犯这些。
    【解决方案2】:

    我现在处于同样的情况,正在清理一个非常大的项目,其中的一部分已经存在多年了。

    我发现做这份工作最重要的是:

    • 版本控制。我使用 TortoiseSVN 是因为它具有出色的 Windows Explorer 集成。我尝试在每次更改后检查,以避免太多的痛苦和痛苦。

    • 一个非常好的和方便的搜索功能,可以进行基本的依赖检查($xyz->loadFromOtherSource 用在哪里?)。我使用的是 nusphere PhpEd,但是那里有很多具有良好搜索功能的工具。

    除此之外,据我所知,没有可靠的 PHP 重构/依赖检查工具。

    【讨论】:

      【解决方案3】:

      没有什么神奇的工具可以帮您做到这一点,只有功能可以帮助您实现自己的解决方案。

      你想要的功能是

      get_included_files();
      

      这将返回迄今为止包含的任何文件的数组。将其放在引导文件的末尾(或所有单个文件的末尾),您可以获得包含或需要的每个文件的列表。这不会报告使用file_get_contentsfopen 等打开的文件。这就是为什么拥有某种包装函数/类来为您调用这些函数是一个好主意(允许您在需要时挂钩操作是)

      我会采用这种方法添加在某处记录所包含文件的代码,然后让您的应用运行一两天(或自己练习其所有功能)这应该会为您提供您的文件的完整列表项目实际正在使用,允许您清理未出现在列表中的文件。这种日志记录可能很简单

      file_put_contents('/tmp/files.txt',print_r(get_included_files(), true),FILE_APPEND);
      

      【讨论】:

      • 听起来很有希望,但有点超出我的想象。这比手动清理要花更长的时间。
      【解决方案4】:

      这将很难实现 - IDE 或类似工具无法知道哪些 PHP 文件打算以某种方式包含,哪些 PHP 文件应该由最终用户直接访问。

      更不用说 PHP 可以让你像这样进行真正的动态文件包含

      $page = $_GET['page'];
      include( 'templates/' . $page . '.php' );
      

      最后,您只需要进行大量的尽职调查。

      【讨论】:

        【解决方案5】:

        几年前,我从另一个离开我们公司的开发人员那里接手代码时遇到了类似的问题。完全重写不是一个选项,因为代码已经在生产中。但代码在当前状态下无法管理。

        1) 我创建了原始源代码的存储库。

        2) 我创建了测试代码来测试他的应用程序的功能。

        3) 我经历了删除、移动和清理函数的过程,直到源代码更易于管理。每次成功更改后检查源代码。

        【讨论】:

          【解决方案6】:

          您可以自动加载文件。 前任。 myfile.php 这个类也应该命名为 myfile

              <?php 
          function __autoload($class_name) {
                  require_once $class_name . '.php';
              }
          
              $obj  = new MyClass1();
              $obj2 = new MyClass2(); 
              ?>
          

          【讨论】:

          • 这只适用于已包含的类文件。它不会涵盖其他任何内容。
          • 所以我认为清洁首先在您的脑海中开始。那是你应该先打扫的地方。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-12-07
          • 2015-04-19
          • 1970-01-01
          • 1970-01-01
          • 2011-11-15
          • 2019-12-03
          • 1970-01-01
          相关资源
          最近更新 更多