Object-Oriented Programming
Members
- Members are public by default
- The declaration for a data member has to be preceded by at least one keyword
<?php
class MyClass {
public $str1 = 'This is a member';
const str2 = 'This is a constant';
static $str3 = 'This is a static member';
}
$obj = new MyClass();
echo $obj->str1 . "\n"; # member
echo MyClass::str2 . "\n"; # constant
echo MyClass::$str3 . "\n"; # static member
?>
Methods
- Methods are public by default
<?php
class MyClass {
function foo1() {
echo "foo1\n";
}
static function foo2() {
echo "foo2\n";
}
}
$obj = new MyClass();
$obj->foo1(); # method
MyClass::foo2(); # static method
?>
Constructors
- If a constructor is defined for a child class, the parent
constructor will only be run if it is explicitly called:
parent::__construct()
<?php
class MyClass {
function __construct($str) {
echo "$str\n";
}
}
$obj = new MyClass('hello');
?>
PHP5
Features supported
- Private, public and protected methods and variables
- Static methods and variables (class
methods and variables)
(
statickeyword) - Constant class variables (
constkeyword) (statickeyword is not needed)
- Interfaces (
interfaceandimplementskeywords) - Abstract classes and methods (
abstractkeyword) - Final classes, methods, and variables (
finalkeyword) (cannot be overridden by a child class)
- Objects as references (objects are always assigned, passed, and returned by reference)
- Cloning objects (
__clonemethod) - Constructors and destructors (
__construct,__destruct) (can optionally still use the name of the class as the name of the constructor)
- Exceptions (
throw,try,catch) (Extending theExceptionbase class involves creating a constructor and agetMessagemethod) - Type hinting (indicate the expected type
of a method
parameter) (
function process_foo_class(foo_class $foo))
__call(optional default method for a class) (can be used to indirectly overload functions) (function __call($name,$arguments))__set(optional default method for accessing undefined variables) (function __set($name,$val))__get(optional default method for setting undefined variables) (function __get($name))
Features not supported
- Multiple inheritance
- Exceptions (
catch allandfinally)
PHP4
- PHP4 is not an OO language, though it provides some OO features.
- The OO mechanisms are slow and limited.
- It's best to avoid using OOP in PHP4, unless speed is not at a factor.
Features not supported
- Static variables (class variables)
- Protected and private member variables
- Object references (have to put the object in a variable, and then use a reference to this variable)
Resources URL:
notes/php/resources
Sources URL:
notes/php/sources