【问题标题】:How do I separate my executable files from my library files?如何将可执行文件与库文件分开?
【发布时间】:2011-10-14 14:11:07
【问题描述】:

我仍然没有得到满意的答案。如果您的 Python 或 PHP 项目有一个不错的系统,请务必提交一些答案。


我的 PHP 和 Python 项目存在管理问题。它们都有两种代码文件:应该在控制台或 Web 浏览器中运行的文件,以及应该从其他文件中包含以扩展功能的文件。在我的项目成长为大型命名空间或模块树之后,它开始迷失方向,“可执行”文件和库文件与我所有文件夹中的相同文件扩展名并排放置。如果 PHP 和 Python 是预编译语言,这将是带有 main 函数的文件。

例如,图片我有命名空间com.mycompany.map.address,其中包含多个.py 或.php 文件,具体取决于项目。它将包含用于不同类型地址的模型和用于处理地址的大量函数。但除此之外,它还会包含一些从终端运行的可执行文件,为用户提供用于搜索地址的工具,并可能从数据库等中添加和删除地址。

我想要一种方法将此类可执行文件与我的命名空间树中的大量代码文件区分开来

如果文件有单独的文件扩展名,这不会有问题。但既然他们没有,我想我应该分开文件夹或其他东西,但我不知道给它们起什么名字。在 PHP 中,我可以执行配置 PHP 以解析不同文件扩展名的 hack 解决方案,因此我的项目可以包含 phpsphpx 文件,例如。

如果有人对如何处理此问题有一些与语言无关的建议,我将不胜感激。这也适用于诸如 C 之类的语言,其中一个项目可能会编译成许多可执行文件。如何将包含main 函数的源文件与其他源文件分开?

【问题讨论】:

  • 我通常将我所有的 php 库文件放入站点文档室外某处的 inc 目录中,并将不可执行的文件命名为 whatever.inc。将该目录添加到 PHP 包含路径非常简单,并且 .inc 表示它们不打算直接运行(并且由于它们位于文档根目录之外,因此也无法远程运行/查看)。
  • 注意 *.inc 命名约定。配置不当的服务器可能只提供文件的原始内容。如果您可以将它们命名为 *.php,从信息泄漏的角度来看,它通常更安全。

标签: php python project-management


【解决方案1】:

以某种方式分隔它们(按名称、按扩展名、按位置)。


示例:

这是我们的测试自动化系统的布局(为清楚起见,手动对输出进行排序):

$ ls -1 automation
atf               \ two major homebrew libraries, with many submodules
atflib            / 

atfconfig         configuration files in .py form
configuration     \ configuration files in .ini form
res_manager       /

test_scripts      - scripts to be invoked directly

然后我们将automation文件夹放入PYTHONPATH,就可以在任何地方import atf.<smth>。 为了运行测试,我们更改为test_scripts

【讨论】:

  • 与最终产品相关的可执行文件,而不仅仅是测试脚本呢?
  • 相同。创建一个文件夹 - 比如说“bin”,并让您的代码以任何合理的方式访问它。
【解决方案2】:

对于我的 PHP 项目,我遵循非常 Java 风格的命名约定(我的背景):

index.php

/classes/{组织类型:net、org、com}/{组织名称}/{组件}

/includes/

/lib/

/modules/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多