Ergebnis 1 bis 5 von 5
  1. #1
    eckocharlie ist offline Routinier
    registriert
    02-07-2006
    Beiträge
    296

    [PHP][FILE] Meinungsfrage

    Hallo Leute,

    da ich noch nicht allzuviel, außer kleine Dinge mit Dateien gemacht hab, schreib ich nun ne Klasse um dem ganzen "näher" zu kommen. Mach das eigentlich immer so um etwas zu lernen und zu üben.

    nun hätte ich eine FileKlasse in der ich eine Methode für das recursive löschen von Verzeichnissen ausprogrammiert habe.

    PHP-Code:
        public function rmDirRec$dirName )
        {
            
    $dir $_SERVER['DOCUMENT_ROOT']."/".$dirName;

            
    closedir$this->delRec$dir ) );
        }
        private function 
    delRec$dir )
        {
            if ( 
    $handle opendir$dir ) )
            {
                while ( ( 
    $file readdir$handle ) ) !== false )
                {
                    if ( 
    $file == "." || $file == ".." )
                    {
                        continue;
                    }
                    elseif ( 
    is_dir$file ) )
                    {
                        
    rmdir$file$this->delRec$file ) );
                    }
                    else
                    {
                        
    unlink$dir."/".$file );
                    }
                }
                return 
    $handle;
            }
        } 
    Meine Frage nun:

    1. Kann man das so lassen?
    2. Würdet ihr es anders / geschickter / kürzer / performanter / etc. lösen?



    Danke schon jetzt dür eure Meinungen :o)


    Lg


    Marcel

  2. #2
    Luz
    Luz ist offline Haudegen
    registriert
    27-09-2003
    Beiträge
    698

    AW: [PHP][FILE] Meinungsfrage

    1. Kann man das so lassen?
    Ich würde meinen: ja.
    2. Würdet ihr es anders / geschickter / kürzer / performanter / etc. lösen?
    Könnte man vlt. schon, (kann man meist ) aber Deine Lösung schaut gut aus. Ich würde noch einige weitere Methoden dazupappen, (Nur bestimmte Files eines Typs in einem Ordner löschen, ein File löschen, Liste der Files eines Typs zurückgeben, Liste aller Files liefern, eventuell Liefern eines Iterators?) dann kannst Du für Fileoperationen immer auf diese Klasse zurückgreifen, und hast alles schön gekapselt.

    Muss man natürlich nicht machen

  3. #3
    eckocharlie ist offline Routinier
    registriert
    02-07-2006
    Beiträge
    296

    AW: [PHP][FILE] Meinungsfrage

    Zitat Zitat von Luz Beitrag anzeigen
    Ich würde noch einige weitere Methoden dazupappen, (Nur bestimmte Files eines Typs in einem Ordner löschen, ein File löschen, Liste der Files eines Typs zurückgeben, Liste aller Files liefern, eventuell Liefern eines Iterators?) dann kannst Du für Fileoperationen immer auf diese Klasse zurückgreifen, und hast alles schön gekapselt.

    Muss man natürlich nicht machen
    Gibt es schon. Dies waren ja nur die MEthoden zum rec. löschen. Die Klasse kann schon lesen und schreiben. habe eine MEthode z.B: read( $option ) in der man dann zwischen verschiedenen möglichkeiten wählen kann. ob einlesen in array oder in einen kompletten String. Eine Iteration hab ich noch nicht. ist aber ne gute idee danke

  4. #4
    slayer2206 ist offline Routinier
    registriert
    09-04-2006
    Beiträge
    273

    AW: [PHP][FILE] Meinungsfrage

    Vielleicht übersehe ich gerade was, aber für mich ist da nichts Rekurisves erkennbar...

    EDIT: Doch gesehen...

  5. #5
    eckocharlie ist offline Routinier
    registriert
    02-07-2006
    Beiträge
    296

    AW: [PHP][FILE] Meinungsfrage

    so....Update....nun schaut die Klasse so aus:

    PHP-Code:
    <?php
    /**
     * This file is part of SLD.
     * 
     * @author    Marcel Nöhmeier <webmaster@park-to-fly.de>
     * @copyright 2006 by Marcel Nöhmeier
     * @version   $Id: File.class.php", "v 1.0 2006/11/03 16:00:00
     * @access    public
     */

    class File
    {
        private 
    $_fileName            "";
        private 
    $_fileDir            "";
        private 
    $_fileAttr            "";
        private 
    $read_file            "";
        private 
    $save_file            "";
        private 
    $_handle            null;
        private 
    $_temp                null;
        private 
    $a_temp                = array();
        private 
    $rec_depth            0;
        private 
    $folder                "";



        public function 
    __construct$fileName ""$fileDir ""$fileAttr "r+" )
        {
            {
            
    $this->_fileName    $fileName;
            
    $this->_fileDir        $fileDir;
            
    $this->_fileAttr    $fileAttr;
            }
        }
        private function 
    is_handle()
        {
            if ( isset( 
    $this->_handle ) && $this->_handle != null )
            {
                return 
    true;
            }
            return 
    false;
        }
        public function 
    openFile()
        {
            if ( 
    $this->_handle fopen$this->_fileDir.$this->_fileName$this->_fileAttr ) )
            {
                return 
    true;
            }
            throw new 
    Exception("FileNotOpenEcxeption");
        }
        public function 
    closeFile()
        {
            if ( @
    fclose$this->_handle ) )
            {
                return 
    true;
            }
            return 
    false;
        }
        public function 
    readFile$option$seperator ":" )
        {
            
    $this->openFile();
            
            switch ( 
    $option )
            {
                case 
    "FileArray":
                return ( @
    $this->read_file file$this->_fileDir.$this->_fileName ) ) ? true false;
                break;
                case 
    "FileString":
                return ( @
    $this->read_file fread$this->_handlefilesize$this->_fileDir.$this->_fileName ) ) ) ? true false;
                break;
                case 
    "FileStringToArray":
                if ( @
    $this->read_file fread$this->_handlefilesize$this->_fileDir.$this->_fileName ) ) )
                {
                    foreach ( 
    $this->read_file as $key => $value )
                    {
                        
    $this->read_file[$key] = explode$seperator$value );
                    }
                    return 
    true;
                }
                return 
    false;
                break;
            }
        }
        public function 
    getFile$b )
        {
            if ( 
    $b )
            {
                return 
    $this->read_file;
            }
            throw new 
    Exception("FileNotReadEcxeption");
        }
        public function 
    writeFile$saveFile )
        {
            
    $this->save_file $insert;
            if( @
    fputs$this->_handle$this->save_file ) )
            {
                return 
    true;
            }
            return 
    false;
        }
        public function 
    renameFile$newFileName )
        {
            if ( !
    rename$this->_fileDir."/".$this->_fileDir$newFileName $this->is_handle() ) ? $this->_handle $this->openFile() ) )
            {
                return 
    false;
            }
            return 
    true;
        }
        public function 
    copyFile$dest )
        {
            if ( 
    copy$this->_fileDir.$this->_fileName$dest.$this->_fileName ) )
            {
                return 
    true;
            }
            return 
    false;
        }
        public function 
    mkDir$dirName )
        {
            return ( @
    mkdir$_SERVER['DOCUMENT_ROOT']."/".$dirName ) ) ? true false;
        }
        public function 
    delFile$file )
        {
            if ( (bool)
    unlink$this->_fileName ) )
            {
                return 
    true;
            }
            return 
    false;
        }
        public function 
    Folder$dirName$option "" )
        {
            
    $dir $dirName;

            if( 
    is_dir$_SERVER['DOCUMENT_ROOT'].$dir ) )
            {
                switch ( 
    $option )
                {
                    case 
    "del_r":
                    try {
                        
    closedir$this->delRec$_SERVER['DOCUMENT_ROOT'].$dir ) );
                    }
                    catch (
    Exception $e)
                    {
                        return 
    false;
                    }
                    return 
    true;
                    break;

                    case 
    "del_dir":
                    return ( @
    rmdir$_SERVER['DOCUMENT_ROOT']."/".$dir ) ) ? true false;
                    break;
                    
                    case 
    "del_file":
                    
                    break;

                    default:
                    try {
                        
    closedir$this->getDir$dir ) );
                        return 
    $this->a_temp;
                    }
                    catch (
    Exception $e)
                    {
                        return 
    false;
                    }
                }
            }
        }
        private function 
    delRec$dir )
        {
            
    $this->setDir$dir"+" );
            if ( 
    $handle opendir$_SERVER['DOCUMENT_ROOT'].$this->folder ) )
            {
                while ( ( 
    $file readdir$handle ) ) !== false )
                {
                    if ( 
    $file == "." || $file == ".." )
                    {
                        continue;
                    }
                    elseif ( 
    is_dir$_SERVER['DOCUMENT_ROOT'].$this->folder."/".$file ) )
                    {
                        
    rmdir$file$this->delRec$file ) );
                        
    $this->setDir$file"-" );
                    }
                    else
                    {
                        if ( !
    unlink$_SERVER['DOCUMENT_ROOT'].$this->folder."/".$file ) )
                        {
                            throw new 
    Exception("deleteFileException");
                        }
                    }
                }
                return 
    $handle;
            }
            else
            {
                throw new 
    Exception("openDirException");
            }
        }
        public function 
    getDir$dir )
        {
            
    $this->setDirDepth$dir"+" );
            
            if ( 
    $handle opendir$_SERVER['DOCUMENT_ROOT'].$this->folder ) )
            {
                while ( ( 
    $file readdir$handle ) ) !== false )
                {
                    if ( 
    $file == "." || $file == ".." )
                    {
                        
    $this->a_temp[$dir]['dir'] = $file;
                        
    #$this->a_temp[] = str_repeat( "-", $this->rec_depth )/*." {d_pic} "*/.$this->folder."/".$file;
                    
    }
                    elseif ( 
    is_dir$_SERVER['DOCUMENT_ROOT'].$this->folder."/".$file ) )
                    {
                        
    $this->a_temp[$dir]['dir'] = $file;
                        
    #$this->a_temp[] = str_repeat( "-", $this->rec_depth )/*." {d_pic} "*/.$this->folder."/".$file;
                        
    $this->getDir$file );
                        
    $this->setDirDepth$file"-" );
                    }
                    else
                    {
                        
    $this->a_temp[$dir]['file'] = $file;
                        
    #$this->a_temp[] = str_repeat( "-", $this->rec_depth )/*." {f_pic} "*/.$this->folder."/".$file;
                    
    }
                }
                return 
    $handle;
            }
            else
            {
                throw new 
    Exception("OpenDirException");
            }
        }
        
        private function 
    setDirDepth$dir$option )
        {
            switch ( 
    $option )
            {
                case 
    "+":
                
    $this->folder    .= "/".$dir;
                
    $this->rec_depth++;
                
    $this->a_temp[$dir]['depth'] = $this->rec_depth;
                break;
                case 
    "-":
                
    $this->folder    str_replace("/".$dir""$this->folder );
                
    $this->rec_depth--;
                
    $this->a_temp[$dir]['depth'] = $this->rec_depth;
                break;
            }
        }
    }
    ?>

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •