classes/phing/system/io/FileSystem.php
public function rmdir($dir, $children = false)
    {
        global $php_errormsg;

        // If children=FALSE only delete dir if empty.
        if (false === $children) {
            if (false === @rmdir($dir)) { // FAILED.
                // Add error from php to end of log message. $php_errormsg.
                $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
                throw new Exception($msg);
            }
        } else { // delete contents and dir.

            $handle = @opendir($dir);

            if (false === $handle) { // Error.

                $msg = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg";
                throw new Exception($msg);
            } else { // Read from handle.

                // Don't error on readdir().
                while (false !== ($entry = @readdir($handle))) {
                    if ($entry != '.' && $entry != '..') {
                        // Only add / if it isn't already the last char.
                        // This ONLY serves the purpose of making the Logger
                        // output look nice:)

                        if (strpos(strrev($dir), DIRECTORY_SEPARATOR) === 0) { // there is a /
                            $next_entry = $dir . $entry;
                        } else { // no /
                            $next_entry = $dir . DIRECTORY_SEPARATOR . $entry;
                        }

                        // NOTE: As of php 4.1.1 is_dir doesn't return FALSE it
                        // returns 0. So use == not ===.

                        // Don't error on is_dir()
                        if (false == @is_dir($next_entry)) { // Is file.

                            try {
                                self::unlink($next_entry); // Delete.
                            } catch (Exception $e) {
                                $msg = "FileSystem::Rmdir() FAILED. Cannot FileSystem::Unlink() $next_entry. " . $e->getMessage();
                                throw new Exception($msg);
                            }
                        } else { // Is directory.

                            try {
                                self::rmdir($next_entry, true); // Delete
                            } catch (Exception $e) {
                                $msg = "FileSystem::rmdir() FAILED. Cannot FileSystem::rmdir() $next_entry. " . $e->getMessage();
                                throw new Exception($msg);
                            }
                        } // end is_dir else
                    } // end .. if
                } // end while
            } // end handle if

            // Don't error on closedir()
            @closedir($handle);

            if (false === @rmdir($dir)) { // FAILED.
                // Add error from php to end of log message. $php_errormsg.
                $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
                throw new Exception($msg);
            }
        }
    }
public function rmdir($dir, $children = false)
    {
        global $php_errormsg;

        // If children=FALSE only delete dir if empty.
        if (false === $children) {
            if (false === @rmdir($dir)) { // FAILED.
                // Add error from php to end of log message. $php_errormsg.
                $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
                throw new Exception($msg);
            }
        } else { // delete contents and dir.

            $handle = @opendir($dir);

            if (false === $handle) { // Error.

                $msg = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg";
                throw new Exception($msg);
            } else { // Read from handle.

                // Don't error on readdir().
                while (false !== ($entry = @readdir($handle))) {
                    if ($entry != '.' && $entry != '..') {
                        // Only add / if it isn't already the last char.
                        // This ONLY serves the purpose of making the Logger
                        // output look nice:)

                        if (strpos(strrev($dir), DIRECTORY_SEPARATOR) === 0) { // there is a /
                            $next_entry = $dir . $entry;
                        } else { // no /
                            $next_entry = $dir . DIRECTORY_SEPARATOR . $entry;
                        }

                        // NOTE: As of php 4.1.1 is_dir doesn't return FALSE it
                        // returns 0. So use == not ===.

                        // Don't error on is_dir()
                        if (false == @is_dir($next_entry)) { // Is file.

                            try {
                                self::unlink($next_entry); // Delete.
                            } catch (Exception $e) {
                                $msg = "FileSystem::Rmdir() FAILED. Cannot FileSystem::Unlink() $next_entry. " . $e->getMessage();
                                throw new Exception($msg);
                            }
                        } else { // Is directory.

                            try {
                                self::rmdir($next_entry, true); // Delete
                            } catch (Exception $e) {
                                $msg = "FileSystem::rmdir() FAILED. Cannot FileSystem::rmdir() $next_entry. " . $e->getMessage();
                                throw new Exception($msg);
                            }
                        } // end is_dir else
                    } // end .. if
                } // end while
            } // end handle if

            // Don't error on closedir()
            @closedir($handle);

            if (false === @rmdir($dir)) { // FAILED.
                // Add error from php to end of log message. $php_errormsg.
                $msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg";
                throw new Exception($msg);
            }
        }
    }
public function rmdir ( $ dir , $ children = false ) { global $ php_errormsg ; // If children=FALSE only delete dir if empty. if ( false === $ children ) { if ( false === @ rmdir ( $ dir ) ) { // FAILED. // Add error from php to end of log message. $php_errormsg. $ msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg" ; throw new Exception ( $ msg ) ; } } else { // delete contents and dir. $ handle = @ opendir ( $ dir ) ; if ( false === $ handle ) { // Error. $ msg = "FileSystem::rmdir() FAILED. Cannot opendir() $dir. $php_errormsg" ; throw new Exception ( $ msg ) ; } else { // Read from handle. // Don't error on readdir(). while ( false !== ( $ entry = @ readdir ( $ handle ) ) ) { if ( $ entry != '.' && $ entry != '..' ) { // Only add / if it isn't already the last char. // This ONLY serves the purpose of making the Logger // output look nice:) if ( strpos ( strrev ( $ dir ) , DIRECTORY_SEPARATOR ) === 0 ) { // there is a / $ next_entry = $ dir . $ entry ; } else { // no / $ next_entry = $ dir . DIRECTORY_SEPARATOR . $ entry ; } // NOTE: As of php 4.1.1 is_dir doesn't return FALSE it // returns 0. So use == not ===. // Don't error on is_dir() if ( false == @ is_dir ( $ next_entry ) ) { // Is file. try { self :: unlink ( $ next_entry ) ; // Delete. } catch ( Exception $ e ) { $ msg = "FileSystem::Rmdir() FAILED. Cannot FileSystem::Unlink() $next_entry. " . $ e -> getMessage ( ) ; throw new Exception ( $ msg ) ; } } else { // Is directory. try { self :: rmdir ( $ next_entry , true ) ; // Delete } catch ( Exception $ e ) { $ msg = "FileSystem::rmdir() FAILED. Cannot FileSystem::rmdir() $next_entry. " . $ e -> getMessage ( ) ; throw new Exception ( $ msg ) ; } } // end is_dir else } // end .. if } // end while } // end handle if // Don't error on closedir() @ closedir ( $ handle ) ; if ( false === @ rmdir ( $ dir ) ) { // FAILED. // Add error from php to end of log message. $php_errormsg. $ msg = "FileSystem::rmdir() FAILED. Cannot rmdir $dir. $php_errormsg" ; throw new Exception ( $ msg ) ; } } }
Delete an empty directory OR a directory and all of its contents.

@param string $dir Path and/or name of directory to delete.
@param bool $children False: don't delete directory contents.
True: delete directory contents.

@throws Exception

@return void
Delete an empty directory OR a directory and all of its contents .