PEAR::Tar

    Date: 11/02/07 (Code WTF)    Keywords: html

    С момента моего знакомства с установщиками PEAR-пакетов в конструкторе класса Archive::Tar имеется конструкция, выглядящая абсурдом для любого программиста, знакомого с ООП. Итак, обратите внимание на места, где встречается return в коде!




        
    // {{{ constructor
        /**
        * Archive_Tar Class constructor. This flavour of the constructor only
        * declare a new Archive_Tar object, identifying it by the name of the
        * tar file.
        * If the compress argument is set the tar will be read or created as a
        * gzip or bz2 compressed TAR file.
        *
        * @param    string  $p_tarname  The name of the tar archive to create
        * @param    string  $p_compress can be null, 'gz' or 'bz2'. This
        *                   parameter indicates if gzip or bz2 compression
        *                   is required.  For compatibility reason the
        *                   boolean value 'true' means 'gz'.
        * @access public
        */
        
    function Archive_Tar($p_tarname$p_compress null)
        {
            
    $this->PEAR();
            
    $this->_compress false;
            
    $this->_compress_type 'none';
            if ((
    $p_compress === null) || ($p_compress == '')) {
                if (@
    file_exists($p_tarname)) {
                    if (
    $fp = @fopen($p_tarname"rb")) {
                        
    // look for gzip magic cookie
                        
    $data fread($fp2);
                        
    fclose($fp);
                        if (
    $data == "\37\213") {
                            
    $this->_compress true;
                            
    $this->_compress_type 'gz';
                        
    // No sure it's enought for a magic code ....
                        
    } elseif ($data == "BZ") {
                            
    $this->_compress true;
                            
    $this->_compress_type 'bz2';
                        }
                    }
                } else {
                    
    // probably a remote file or some file accessible
                    // through a stream interface
                    
    if (substr($p_tarname, -2) == 'gz') {
                        
    $this->_compress true;
                        
    $this->_compress_type 'gz';
                    } elseif ((
    substr($p_tarname, -3) == 'bz2') ||
                              (
    substr($p_tarname, -2) == 'bz')) {
                        
    $this->_compress true;
                        
    $this->_compress_type 'bz2';
                    }
                }
            } else {
                if ((
    $p_compress === true) || ($p_compress == 'gz')) {
                    
    $this->_compress true;
                    
    $this->_compress_type 'gz';
                } else if (
    $p_compress == 'bz2') {
                    
    $this->_compress true;
                    
    $this->_compress_type 'bz2';
                } else {
                    die(
    "Unsupported compression type '$p_compress'\n".
                        
    "Supported types are 'gz' and 'bz2'.\n");
                    return 
    false;
                }
            }
            
    $this->_tarname $p_tarname;
            if (
    $this->_compress) { // assert zlib or bz2 extension support
                
    if ($this->_compress_type == 'gz')
                    
    $extname 'zlib';
                else if (
    $this->_compress_type == 'bz2')
                    
    $extname 'bz2';

                if (!
    extension_loaded($extname)) {
                    
    PEAR::loadExtension($extname);
                }
                if (!
    extension_loaded($extname)) {
                    die(
    "The extension '$extname' couldn't be found.\n".
                        
    "Please make sure your version of PHP was built ".
                        
    "with '$extname' support.\n");
                    return 
    false;
                }
            }
        }
        
    // }}}

    ?>



    Это кросспост. Оригинал тут: http://digital-dog.livejournal.com/240035.html?mode=reply

    Source: http://community.livejournal.com/code_wtf/111012.html

« Рекурсивный WTF || JSP жжотЪ »


antivirus | apache | asp | blogging | browser | bugtracking | cms | crm | css | database | ebay | ecommerce | google | hosting | html | java | jsp | linux | microsoft | mysql | offshore | offshoring | oscommerce | php | postgresql | programming | rss | security | seo | shopping | software | spam | spyware | sql | technology | templates | tracker | virus | web | xml | yahoo | home