Hi, I am new here..
Hmm, I think what you should add in your function, Yeti, is else -
wont it will be for better performance? and not the suppress the
error, and Jochem, then it will be perfect - wont it? I am not sure
about the else - but as long you provide to the PHP Processor more
information - wont it make him be faster?

function recursive_mkdir($dir) {
       if (is_dir($dir)) return true;
       else {
              if (recursive_mkdir(dirname($dir))) return @mkdir($dir);
              return false;
       }
}

On Thu, Aug 21, 2008 at 3:42 PM, Jochem Maas <[EMAIL PROTECTED]> wrote:
> Yeti schreef:
>>
>> How about this one?
>>
>> function recursive_mkdir($dir) {
>>        if (is_dir($dir)) return true;
>>        if (recursive_mkdir(dirname($dir))) return @mkdir($dir);
>>        return false;
>> }
>
> covers half of one of my gripes about the OP's originally posted function.
> and it introduces a regression in that file mode is no longer supported.
>
> so I'd say it's no better.
>
>>
>> On Thu, Aug 21, 2008 at 1:04 AM, Ashley Sheridan
>> <[EMAIL PROTECTED]> wrote:
>>>
>>> Whats even more fun is inheriting somebody elses' *undocumented* code.
>>> Oh, and if just happens to be in a strange programming language that you
>>> don't know too well, all the better! Sounds awful, but it did happen to
>>> me once :-/
>>>
>>> Ash
>>> www.ashleysheridan.co.uk
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: Jochem Maas <[EMAIL PROTECTED]>
>>> To: Robert Cummings <[EMAIL PROTECTED]>
>>> Date: Thu, 21 Aug 2008 00:52:09 +0200
>>> Subject: Re: [PHP] Does this seem wrong to anyone else?
>>> Robert Cummings schreef:
>>>>
>>>> On Wed, 2008-08-20 at 14:09 -0700, Stephen Johnson wrote:
>>>>>
>>>>> I am debugging someone else¹s code, and this is what they have :
>>>>>
>>>>>
>>>>> 1055    function mkdir_recursive($pathname, $mode)
>>>>> 1056    {
>>>>> 1057        is_dir(dirname($pathname)) ||
>>>>> mkdir_recursive(dirname($pathname), $mode);
>>>>> 1058        return is_dir($pathname) || @mkdir($pathname, $mode);
>>>>> 1059    }
>>>>>
>>>>> The part that bothers me is that mkdir_recursive calls itself from
>>>>> within
>>>>> itself.
>>>>> I am not an expert on this particular type of thing, and maybe that is
>>>>> allowed, but it seems wrong to me, and this error is being generated:
>>>>
>>>> That's the point of recursion... to recursively call oneself!
>>>>
>>>>> Fatal error: Call to undefined function mkdir_recursive() in xxxxx.php
>>>>> on
>>>>> line 1057
>>>
>>> the call to mkdir_recursive() on line 1057 is made inside
>>> mkdir_recursive()
>>> so it's impossible that the function doesn't exist ... unless the
>>> function
>>> you posted is actually a method of a class, in which case some time in
>>> the past
>>> the project included a standalone function mkdir_recursive() which is
>>> been
>>> removed. at least that would be my first/best guess.
>>>
>>>> Not sure why you're getting that error since it appears to be well
>>>> defined above... unless xxxxx.php is not the same file in which
>>>> mkdir_recursive() ha sbeen defined. I'll wager it's not... in which case
>>>> you need to ensure the file that contains the mkdir_recursive() function
>>>> declaration is included into xxxxx.php. BTW, FWIW, I wouldn't call the
>>>> above code good quality since it obfuscates its intent by using ||
>>>> hackishness. It's succinct but less obvious.
>>>
>>> it's plain horrid, not to mention using is_dir() & dirname() twice
>>> unnecessarily,
>>> providing no checks as to whether the path exists and is a file or
>>> whether file
>>> permissions are okay (if your gonna wrap mkdir() might as well do a
>>> proper job) , etc.
>>>
>>> worst of all the call to mkdir() is error suppressed ... a nice big wtf
>>> waiting
>>> to happen when it fails.
>>>
>>> oh and there is absolutely no need to use recursion here, a while loop
>>> could
>>> be used instead which would be more efficient.
>>>
>>> lastly Stut pointed out that php5 negates the need for this function
>>> altogether,
>>> but you might still be stuck on php4 for some reason.
>>>
>>> ain't it fun inheriting other peoples 'code' ;-)
>>>
>>>> Cheers,
>>>> Rob.
>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>>
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>
>>
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to