PHP interview
abstract class
Can not be Instantiable.(cannot become instant. Can only be inherited)
abstract class Fruit { private $color; abstract public function eat() public function setColor($c) { $this->color = $c; } }
Difference between Abstract Class and Interface
Abstract Classes
An abstract class can provide some functionality and leave the rest for derived class
The derived class may or may not override the concrete functions defined in base class
The child class extended from an abstract class should logically be related
Interface
An interface cannot contain any functionality. It only contains definitions of the methods
The derived class must provide code for all the methods defined in the interface
Completely different and non-related classes can be logically be grouped together using an interface
Single or Double Quotes?
//Sometimes people use double quotes in PHP to avoid having to use the period to separate code. For example, you could write: $color='red'; echo "I have a $color shirt on today<br/>"; //Faster however is not always better. A better way to write this code would be: echo 'I have a ' .$color. ' shirt on today<br/>'; echo 'I have a $color shirt on today<br/>';
Output:
I have a red shirt on today I have a red shirt on today I have a $color shirt on today
Avoid Mysql Injection
$_POST['username'] = 'aidan'; $_POST['password'] = "' OR ''='"; $query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'"; $passwd=mysql_real_escape_string($_POST['password']); $passwd1=addslashes($_POST['password']); echo $passwd."<br />"; echo $passwd1."<br />"; echo ($query);
Output
\' OR \'\'=\' \' OR \'\'=\' SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
This would allow anyone to log in without a valid password.
Static method
Declaring class properties or methods as static makes them accessible without needing an instantiation of the class.
<?php class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } print Foo::$my_static . "\n"; $foo = new Foo(); print $foo->staticValue() . "\n"; print $foo->my_static . "\n"; // Undefined "Property" my_static print $foo::$my_static . "\n"; $classname = 'Foo'; print $classname::$my_static . "\n"; // As of PHP 5.3.0 print Bar::$my_static . "\n"; $bar = new Bar(); print $bar->fooStatic() . "\n";