我正在尝试理解PSR-0中的示例,但无法成功。我知道\
是目录分隔符(至少在我的Windows操作系统中),但在我看来,它不能等同于/
。我搜索了它们之间的区别,但没有找到结果。
在Linux或MacOS下运行时,PHP只允许使用/
作为目录分隔符。
在Windows下运行时,PHP接受/
和\
作为目录分隔符;它们被视为完全相同。
几乎所有情况下,最好始终使用/
,因为这将使您的代码在任何平台上运行。如果您使用\
作为目录分隔符,则您的代码仅适用于Windows。
在Windows上的区别是允许与可能提供带有\
分隔符路径的其他软件兼容,但除非您特别需要这样做,否则最好坚持使用/
。
此外,在PHP中还有另一种使用\
的情况可能会使你感到困惑(特别是你提到了PSR0)。\
也是PHP命名空间的分隔符。
命名空间不同于目录分隔符,但它们可能看起来像它们,因为通常的做法是组织项目使得命名空间匹配目录结构。这样做可以使您的代码模块易于查找并编写自动加载器,因此这是按照PSR0推荐构建项目的方式,但在PHP语言中并不是强制要求的;命名空间与目录路径不同。
\n
,在正则表达式中\s
表示空格字符。如果要在字面字符串中使用带反斜杠的路径,您需要深入了解PHP如何解释字符串字面量。使用正斜杠可以避免麻烦。 - alexis\
用于命名空间,而/
是Windows文件系统上的路径分隔符,例如:C:/Users/Sam/Documents
PSR类加载器允许您使用命名空间中提供的信息从目录中查找和加载类。例如,一个名为response.php
的类可以放置在项目根目录下的文件夹samayo/http
中,完整路径将是samayo/http/response.php
。现在,PSR允许您使用命名空间samayo\http\reponse
来使用DIRECTORY_SEPARATOR
改变目录分隔符并进行一些后台操作以加载文件。\
被用作命名空间的分隔符,/
被用作文件的目录分隔符。这个例子基于Unix系统。
虽然在Windows上使用\
作为目录分隔符也可以(例如,用于加载文件),但使用/
同样有效。但是,如果您想在所有系统上使用正确的目录分隔符,您可以始终使用特定于系统的常量DIRECTORY_SEPARATOR
。
DIRECTORY_SEPARATOR
和回答。 - Adib Aroui
/
正斜杠,以掩盖其来源。然而,标准的/
目录分隔符也可以在 DOS/Windows 上使用。 - mario