Php 最好返回空字符串或空值

Php 最好返回空字符串或空值,php,Php,如果我正在编写以下方法(例如),是否认为以下两种方法都是好的做法: 答:如果文档不存在,则返回空字符串 返回一个空值 在做了很多Java和Java中需要返回类型的方法之后,我觉得返回一致类型是最佳实践,PHP中也是这样,还是返回空值更好 DocumentClass { public function getDir($documentId) { /* Code to get location of document */ return (file_

如果我正在编写以下方法(例如),是否认为以下两种方法都是好的做法:

答:如果文档不存在,则返回空字符串

返回一个空值

在做了很多Java和Java中需要返回类型的方法之后,我觉得返回一致类型是最佳实践,PHP中也是这样,还是返回空值更好

DocumentClass
{
    public function getDir($documentId)
    {
        /* Code to get location of document  */
        return (file_exists($document) ? $document : '');
    }
}

if (!empty($documentClass->getDir(5))
{
    /* Do this */
}
如果返回空值更好,您能解释一下原因吗


谢谢

您将如何处理此返回值?这是一个逻辑错误、非法输入信号,还是只是一些边缘情况

在这两种“错误”情况下,我都坚持使用异常,而不是一些边缘返回值——特别是因为PHP是弱类型语言,而且在一些(愚蠢的)编写的
=
表达式中很容易混合NULL和“”

对于边缘情况,我可能会坚持使用
FALSE
作为返回值。在我看来,这是一种有点破绽的方法(请查看此链接了解详细信息),但至少这是PHP中的一个常见习惯用法。

returnFALSE用于不存在的文件

所以你可以用这种方法改变你的状况

if (false ! == $documentClass->getDir(5))
{
    /* Do this */
}
备选方案:

如果文件名指定的文件或目录存在且可读,则返回TRUE,否则返回FALSE

PHP约定 返回布尔值
FALSE

面向对象方法 抛出异常。您还应该使用只返回布尔值(true或false)的方法
dir_exitsts
(或您喜欢的任何其他名称)。在调用
getDir

这方面确实没有具体的规定。这完全取决于你


我遵循返回
false
的PHP方法,有两个常用的返回值:
false
null

PHP的内部函数似乎出于任意原因支持
false
,但我个人更喜欢
null
,因为它更适合表示
未定义的

旁注:测试false(
false
==x)比
is\u null($x)
:)稍微多一些


然而,在许多情况下,接收此返回值的代码无法对其执行任何有意义的操作;这时您可以抛出异常以跳过该代码段,就像在Java中一样;这是一种方便的错误处理流控制机制。

鉴于questoin似乎是关于OOP的,那么请注意,您也可以决定自己创建一个,该模式的wikipedia页面包含一个“描述”,碰巧使用了一个目录列表器作为示例,男孩和女孩…

我更喜欢尽可能返回布尔值。此函数将对不存在的文件返回
FALSE
。@diEcho你确定吗,我刚刚测试了上述内容,它确实返回字符串值?+1。我来自java,我不想从一个名为getDir()的方法返回NULL,因为它可能会在以后导致NPE。相反,添加一个类似dirExists($id)的方法,然后如果试图加载一个不存在的dir,则抛出异常。我高度支持此方法。@t您是指异常方法吗?它更像是一种边缘情况。在我可以研究的一个常见的习惯用法中,您是否有任何关于返回FALSE的链接或引用?谢谢。例如,检查PHP:如果出现错误,大多数(从
strpos/strstr
及其下属到
explode
)都会返回
FALSE
(尽管错误程度相差很大)。同样的方法也被许多人使用。事实上,短语
在失败时返回FALSE
非常。。。流行于php.net文档部分:这里是。)但即使是这种行为也可能不一致,例如与。哦,天哪。