【问题标题】:Best practices in trailing slashes within variables [closed]变量中尾随斜杠的最佳实践[关闭]
【发布时间】:2011-08-28 00:01:00
【问题描述】:

我想知道在声明包含路径或 URI 的变量或常量时哪个是最佳做法(以及为什么):是否带有斜杠?

与:

define(MODULE_URL,'http://mysite.com/modules/');
$var = MODULE_URL . 'module-dir/file.ext';

没有:

define(MODULE_URL,'http://mysite.com/modules');
$var = MODULE_URL . '/module-dir/file.ext';

【问题讨论】:

标签: url


【解决方案1】:

我用这个:

define(MODULE_URL,'http://mysite.com/modules');
$var = MODULE_URL . '/module-dir/file.ext';

因为它强制保持一致性,并且如果我必须输出它们,它会给我看起来更清晰的路径名,因为这样:

$var = MODULE_URL . 'module-dir/file.ext';

行不通。而这个:

define(MODULE_URL,'http://mysite.com/modules/');
$var = MODULE_URL . 'module-dir/file.ext';

让你逍遥法外:

$var = MODULE_URL . 'module-dir/file.ext';
$var = MODULE_URL . '/module-dir/file.ext';

所以如果我用第二个例子输出$var,我会有这个:

http://mysite.com/modules//module-dir/file.ext

看起来很丑。

【讨论】:

  • 我看到所有答案都比较主观,而不是基于经验,但我同意“力量一致性”的理念。谢谢
【解决方案2】:

// 将被解释为/ 的基础上,我认为您应该始终在目录名称的末尾加上斜杠。所以两者都

define(MODULE_URL,'http://mysite.com/modules/');
$var1= MODULE_URL . 'module-dir/file.ext';
$var2 = MODULE_URL . '/module-dir/file.ext';

$var1$var2 指向同一个地方。如果没有尾部斜线,情况就不是这样了。

我也认为这在所有语言中都是相当标准的做法。

【讨论】:

  • 谢谢,我知道这是一个相当主观的问题。我觉得更倾向于强制一致性,尽管我明白你的推理。我想看看这是一种标准做法,但我想它会随着经验而来。
  • 这不是主观的。如果最后有斜线,那么您可以保证您指向一个目录,如果不是,它可能是一个没有扩展名的文件。要求在文件之前添加斜杠不强制约定,这很烦人; “奇怪的'//'很丑”实际上并没有把它作为不喜欢'/'的理由。通常你想要uri = directoryName + fileName 的属性。但是通过丢失尾部的斜杠,你也没有。
【解决方案3】:

我更喜欢不带斜杠,因为%s/%s%s%s 更具可读性,并且双斜杠计入最大路径长度。这不是 URI 的问题,并且在大多数系统上你永远不会达到长度,但我希望在所有环境和案例中保持一致。 此外,我可以执行以下操作:

define(MODULE_URL, 'http://example.com/modules');
$mod['en'] = MODULE_URL . '_en/' . $mod_name;

因为你并不总是控制某人如何创建他们的层次结构。

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 2020-05-20
    • 2021-02-17
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多