You are here
PHP cheat sheet
// Call with php -f test.php
error_reporting(E_ALL);
// Class (blueprint) = package => object (instantiated class)
class ParentClass {
// variable = property
// encapsulation
// visible anywhere
public $public = 'Public';
// visible only within the class, and in inherited and parent classes
protected $protected = 'Protected';
// visible only within class
private $private = 'Private';
// function = methode
public function printItem($string) {
// ParentClass
print get_class($this) . ': ' . $string . PHP_EOL;
print $this->public . PHP_EOL;
print $this->protected . PHP_EOL;
print $this->private . PHP_EOL;
}
const CONST_VALUE = 'PHP is great!';
public function printPHP() {
$classname = get_class($this);
print constant($classname . '::CONST_VALUE') . PHP_EOL;
print $classname::CONST_VALUE . PHP_EOL;
print ParentClass::CONST_VALUE . PHP_EOL;
}
}
class ChildClass extends ParentClass {
public function printItem($string) {
// ChildClass
print get_class($this) . ': ' . $string . PHP_EOL;
print self::__bla();
}
// private functions are names with __
private function __bla() {
print 'bla' . PHP_EOL;
}
}
class Main {
private static $instance;
var $bla;
private static function __init() {
}
}
class Person {
var $name; // public!
// access modfiers (public = default)
public $height;
protected $social_insurance;
private $pin_number;
// PHP constructor methode initialise object when instantiated
function __construct($persons_name) {
$this->name = $persons_name;
}
private function getPinNumber() {
return $this->pin_number;
}
function setName($new_name) {
$this->name = $new_name;
}
function getName() {
return $this->name;
}
}
// inherit from Person all public and protected properties and methodes
// Employee is a TYPE of Person
class Employee extends Person {
function __construct($employee_name) {
$this->setName($employee_name);
}
// Overwrite the setName methode from Person
function setName($new_name) {
if ( $new_name != 'Oli' ) {
$this->name = strtoupper($new_name);
}
else {
Person::setName($new_name);
// Or alternatively:
// parent::setName($new_name);
}
}
}
$main = new Main();
$parent = new ParentClass();
$child = new ChildClass();
$parent->printItem('baz');
// Output: 'ParentClass: baz'
$parent->printPHP();
// Output: 'PHP is great'
$child->printItem('baz');
// Output: 'ChildClass: baz'
$child->printPHP();
// Output: 'PHP is great'
// interface bar {
// }
// class MyDatabase implements IDatabase {
// }
// abstract class Base {
// abstract protected function __construct ();
// }
// protected function hello_right () {
// handle/reference to new object person
$p = new Person('Oliver');
print $p->getName() . PHP_EOL;
$p->setName('Oli');
print $p->getName() . PHP_EOL;
// This is a bad behaviour!
print 'Bad hehaviour: ' . $p->name . PHP_EOL;
// This should give an error
// print $p->pin_number . PHP_EOL;
$e = new Employee('Hugo');
print "Employee " . $e->getName() . PHP_EOL;
$e = new Employee('Oli');
print "Employee " . $e->getName() . PHP_EOL;
function inverse($x) {
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
echo inverse(5) . "\n";
echo inverse(0) . "\n";
}
catch (Exception $e) {
echo 'Caught exception: ' . $e->getMessage() . "\n";
}
// Continue execution
echo 'Hello World';
*/tags: