OOP php:方法递归返回null

时间:2014-09-18 17:17:13

标签: php oop recursion

我创建了一种制作拍卖名称websafe的方法,我刚刚添加了对重复网页名称的检查,它基本上尝试使用给定的网络安全名称获取拍卖,然后在网络名称中添加一个随机数。但该方法最终返回null ...

private function dupplicateUrlFix($url){
    var_dump($url)//Correct
    $existingAuction = Auction::get($url, "webname");

    //if webname exists, cancatenate with random int, and check if new webname exists
    if(!empty($existingAuction->webname)){
        $newUrl = $existingAuction->webname.rand(0,9);
        $this->dupplicateUrlFix($newUrl);
        return;
    }
    var_dump($url) //Correct Not a dupplicate
    return $url;
}

public function get_url_clean($string) {
    $string = strToLower($string);
    //cleaning....
    //checks for dupplicate
    var_dump($this->dupplicateUrlFix($string)); //is null?
    die();

    return $clean;
}

我尝试在dupplicateUrlFix()方法中切换顺序,只是返回一个字符串。它只进入if(!空......一次。

是否有解决方案或更好的方法?

1 个答案:

答案 0 :(得分:1)

我认为这里不需要递归:

private function dupplicateUrlFix($url) {
    $existingAuction = Auction::get($url, "webname");
    while (!empty($existingAuction->webname)) {
        $url = $existingAuction->webname . rand(0, 9);
        $existingAuction = Auction::get($url, "webname");
    }

    return $url;
}