PHP: auto set and get through magic call

This is how to set and get automatically through magic function in PHP.

class myClass
{

    public static function __call($method, $args)
    {
        /**
         * Set to only responde to set and get method calls
         */
        if (preg_match('/^(?P<action>set|get)(?P<property>.*)/', $method, $matches)) {
            $action = $matches['action'];

            $property = $matches['property'];
            $property[0] = strtolower($property[0]);

            /**
             * Set to only respond if the called property exists
             */
            if (property_exists($this, $property)) {
                switch ($action) {
                    case 'set':
                    $this->$property = $args[0];
                    break;

                    case 'get':
                    return $this->$property;
                    break;

                    default:
                    break;
                }

                return $this;
            }
        }
    }

}

CSS: Equal heights of multiple columns

When multiple divs inside a single wrapper div, to allow all inner divs extend to max height is one of the tricky things for CSS, and here is the solution.

Give the wrapper overflow:hidden, give each inner div a large negative margin, and a same positive padding.

Works for

  • Firefox 2
  • Firefox 3
  • Internet Exploer 6
  • Internet Exploer 7
  • Internet Exploer 8
  • Safari 3
  • Safari 4

Stylesheet

#wrapper {
 background-color: #ff0066;
 overflow: hidden;
}

#one {
 width: 60%;
 float: left;
 background-color: #0099cc;
 margin-bottom: -10000px;
 padding-bottom: 10000px;
}

#two {
 width: 40%;
 float: left;
 background-color: #990000;
 margin-bottom: -10000px;
 padding-bottom: 10000px;
}

Html

<div id="wrapper">
<div id="one">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque odio metus, vehicula et, rutrum sit amet, pulvinar et, eros. Pellentesque ac elit. In orci sem, ornare in, sodales vitae, suscipit ac, eros. Nam semper consequat massa. Nulla mollis justo vitae neque. Vivamus vel nunc. Donec urna. Fusce tincidunt fringilla magna. Integer rutrum turpis eget leo. Fusce a tellus. Integer non odio sed mauris convallis blandit. Nullam volutpat lorem a mi. Sed non magna. Praesent quis eros. Proin semper mollis sapien. Nunc condimentum purus quis lectus. Quisque congue diam. Phasellus eget tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse venenatis felis ut neque. Fusce odio. Nulla facilisi. Etiam bibendum augue eleifend purus. Vivamus vitae ligula vitae neque interdum bibendum. Curabitur scelerisque malesuada nulla. Nunc vel ligula eget felis volutpat viverra. Suspendisse nec diam et quam pulvinar tempor. Quisque in dui. Curabitur vitae diam nec mauris ornare egestas. In non ipsum et arcu mattis dictum. In hac habitasse platea dictumst. Integer condimentum, nunc et rhoncus fringilla, quam leo elementum ipsum, quis bibendum magna diam non enim. Praesent nunc augue, dictum a, facilisis vel, vulputate a, dui. Aliquam sit amet orci. Aliquam ligula massa, porttitor sit amet, laoreet eget, blandit vel, nunc. Curabitur eget tortor. Vestibulum sit amet felis ac velit faucibus malesuada. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In porta quam quis erat. Vestibulum sit amet turpis. Phasellus rhoncus, tortor et interdum ullamcorper, arcu enim porta ligula, cursus bibendum urna nisl id neque. Nulla tempus varius dui. Curabitur varius hendrerit turpis. Suspendisse augue. Aenean accumsan condimentum leo. In neque. Phasellus varius, ante et consectetur mattis, felis ligula congue nibh, eu pellentesque ipsum lacus a lacus. Sed nec odio. Sed dignissim hendrerit diam. Proin nisi. Vivamus pretium augue ut nisi. Phasellus at nisl et arcu vestibulum mollis. Curabitur sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur erat purus, porttitor sed, viverra at, bibendum non, arcu. Sed venenatis, mi ac tincidunt tempus, est lacus pulvinar augue, at iaculis nulla diam vel orci. Quisque mauris enim, vestibulum vel, tristique vitae, pretium eget, erat. Vestibulum eros. Nam elit metus, placerat a, convallis in, pharetra in, ligula. Quisque ornare, diam bibendum euismod venenatis, augue nisl porta sem, at accumsan mi dui vitae est. Phasellus magna enim, molestie a, commodo congue, venenatis ac, nibh. Vestibulum nisi. In massa tellus, ultricies non, fermentum ac, blandit sit amet, elit. Vivamus ut neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi pharetra.</div>
<div id="two">Curabitur massa risus, mollis ut, imperdiet vel, iaculis ut, purus. Donec nec erat. Morbi aliquet. Quisque lacus purus, accumsan vitae, hendrerit quis, luctus a, sapien. Sed nec leo. Sed vitae purus. In pellentesque vulputate magna. Praesent condimentum velit aliquet neque. Donec pretium dictum mauris. Nullam vehicula. Donec varius iaculis nulla. Maecenas sollicitudin, enim quis vestibulum fermentum, tortor nulla accumsan sem, ac venenatis arcu velit ut nunc. Praesent in lorem id enim malesuada mollis. Suspendisse orci dolor, accumsan ut, tincidunt elementum, ultrices sit amet, nulla. Quisque est libero, porttitor ac, ornare vel, blandit at, massa. Nulla lobortis leo quis tortor. Integer dignissim tortor in sem. Quisque vehicula venenatis purus. Praesent et nisl et diam molestie molestie. Donec risus. Nunc non odio. Sed ac odio. Nunc tellus libero, interdum sit amet, mollis vitae, malesuada eu, eros. Aenean ligula risus, auctor sed, ornare non, imperdiet sit amet, ante. Pellentesque pulvinar. Pellentesque dictum nisl eu dui. Phasellus fermentum sapien et ante. Sed lobortis. Sed mi ante, viverra ac, porttitor vestibulum, consectetur at, urna. Donec metus. Aenean aliquet metus non leo. Cras ultricies augue a mauris. Pellentesque justo enim, pellentesque eget, imperdiet nec, molestie ut, eros. Donec elit eros, pulvinar ac, viverra vel, dignissim eu, sapien. Aliquam gravida erat non dui. Curabitur sed enim. Nam sollicitudin ligula ut lacus. Maecenas convallis tincidunt nisl. Nunc laoreet, erat quis condimentum congue, justo velit hendrerit lectus, in sagittis sapien nisl vitae nisi. Vestibulum a urna. Praesent dapibus ante vitae turpis vestibulum egestas. Ut molestie. Maecenas ac diam. Quisque sit amet eros. Integer convallis eros sit amet tortor. Praesent convallis. Cras dapibus tincidunt erat. Etiam ultricies orci lobortis felis. Curabitur tempus. Nulla nec nunc ut turpis elementum luctus. Mauris eros. Curabitur nec arcu id eros pretium venenatis. Praesent vitae erat. Pellentesque aliquet. In mi. Ut nibh. In metus nibh, mollis sit amet, dignissim at, tincidunt ut, urna. Nam lacus. Aliquam id mi. Sed consectetur orci gravida dolor. Nunc ut justo. Vivamus faucibus sodales est. In convallis nisi non enim. Pellentesque a metus at nibh tincidunt ullamcorper. Aliquam semper faucibus turpis. Sed rutrum nulla in tortor. Nullam vel tellus accumsan lorem tincidunt accumsan. Nulla nisi sem, auctor in, convallis at, porttitor et, lorem. Sed et sem et urna hendrerit gravida. Integer bibendum nisi a risus. Etiam venenatis magna nec quam. Ut ornare mi ac justo. In at sem vitae diam semper pretium. Phasellus lorem quam, tempus vitae, tristique vehicula, rhoncus sit amet, dui. In hac habitasse platea dictumst. Nunc sit amet est eu mauris pellentesque scelerisque. Ut nulla eros, tempor ac, bibendum a, sollicitudin nec, lacus. Mauris blandit nulla ac libero.</div>
</div>

Bash: a few bash commands

### Find all php files from the current folder down with 'LOOKINGFOR' content ###
find . -name '*.php' -print0 | xargs -0 grep 'LOOKINGFOR'

### Database backup and import ###
mysqldump -u ACCOUNT -pPASSWORD --databases DATABASE1 DATABASE2 DATABASE3 --complete-insert --extended-insert=false > FILE.sql
mysql -u ACCOUNT -pPASSWORD DATABASENAME < FILE.sql

### Checking a log file content live ##
tail -f /var/log/httpd/error_log

### Tar and untar ###
tar -cvzf FILENAME.tgz FOLDERNAME
tar -xvzf FILENAME.tgz

### Delete files that name matches 'MATCHPATTERN' ###
find . -name 'MATCHPATTERN' -exec rm -f '{}' ;

### SCP ###
scp LOCALFILENAME USERNAME@REMOTEHOST:/REMOTEFOLDER/FILENAME