This tutorial contains some parts of tuorial
Object Oriented PHP - Class and object
Object Oriented PHP - Interface and abstractor
Object Oriented PHP - Constructor and destructor
Object Oriented PHP - Inheritance
Object Oriented PHP - Visivility
Object Oriented PHP - Some common keywords
some magic words in php
constant, Static, $this, parent , final keyword and Scope Resolution Operator (::)
Whats the meanings of this keywords. Short info are here.
- static : Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static can not be accessed with an instantiated class object (though a static method can).
- $this : this varibale declare the own class.
- parent : This valiable decale the parent calss so that a child can access its parent methods.
- final : PHP 5 introduces the final keyword, which prevents child classes from overriding a method by prefixing the definition with final. If the class itself is being defined final then it cannot be extended.
parent & $this keyword
This example show how to call parent keyword and when it use. When a class inherited another class then the child class need to access the parent function. Then ths parent keyword use for access paarent methods. And $this keyword is use for own classes variable.
<?php
class Vehicle {
public $brand="Motorola";
public $color="Black";
public $model="dg12";
function info() {
echo "Model no. ".$this->model."\n";
echo "Brand no. ".$this->brand."\n";
echo "Color no. ".$this->color."\n";
}
}
class Bike extends vehicle{
function bikeDetails() {
public $price="$1200";
parent::info();
echo "Price : ".$this->price."\n";
}
}
$obj = new Bike();
echo $obj->bikeDetails();
?>
Final keyword in php
The final keyword, which prevents child classes from overriding a method by defining before the method or class. Properties cannot be declared final, only classes and methods may be declared as final.
<?php
class Bike {
public function test() {
echo "vehicle::test() called\n";
}
final public function moreTesting() {
echo "vehicle::moreTesting() called\n";
}
}
class car extends vehicle {
public function moreTesting() {
echo "car::moreTesting() called\n";
}
}
// Results in Fatal error: Cannot override final method Bike::moreTesting()
?>
const keyword in php
Define constant value php uses the const keyword.
<?php
class vehicle {
const CONST_VALUE = 'Vehicle shop';
}
echo vehicle::CONST_VALUE;
$classname = 'vehicle';
echo $classname::CONST_VALUE; // As of PHP 5.3.0
?>
Scope Resolution Operator (::)p
The Scope Resolution Operator (also called Paamayim Nekudotayim) or in simpler terms, the double colon, is a token that allows access to static, constant, and overridden properties or methods of a class.
When referencing these items from outside the class definition, use the name of the class.
As of PHP 5.3.0, it's possible to reference the class using a variable. The variable's value can not be a keyword (e.g. self, parent and static).
Paamayim Nekudotayim would, at first, seem like a strange choice for naming a double-colon. However, while writing the Zend Engine 0.5 (which powers PHP 3), that's what the Zend team decided to call it. It actually does mean double-colon - in Hebrew!
From outside the class
From outside the class
<?php
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; // As of PHP 5.3.0
echo MyClass::CONST_VALUE;
?>
From inside the class
<?php
class OtherClass extends MyClass{
public static $my_static = 'static var';
public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
}
$classname = 'OtherClass';
echo $classname::doubleColon(); // As of PHP 5.3.0
OtherClass::doubleColon();
?>
when call a parent method
<?php
class MyClass{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass{
// Override parent's definition
public function myFunc()
{
// But still call the parent function
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
$class = new OtherClass();
$class->myFunc();
?>
Static keyword in php
<?php
class vehicle {
const CONST_VALUE = 'Vehicle shop';
}
class car extends vehicle{
public static $my_static = 'static var';
public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
}
$classname = 'car';
echo $classname::doubleColon(); // As of PHP 5.3.0
echo car::doubleColon();
?>
Synatx for declaring static. But when we use static. Yes it is a good thing, when we not need to institiate a class to access anything.
<?php
class vehicle {
public static function aStaticMethod() {
// ...
}
}
vehicle::aStaticMethod();
$classname = 'vehicleo';
$classname::aStaticMethod(); // As of PHP 5.3.0
?>
See a complete example where we use static keyword, so we need not to create any instantiate of a classes.
<?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;
}
}
echo Foo::$my_static . "\n";
$foo = new Foo();
echo $foo->staticValue() . "\n";
echo $foo->my_static . "\n"; // Undefined "Property" my_static
echo $foo::$my_static . "\n";
$classname = 'Foo';
echo $classname::$my_static . "\n"; // As of PHP 5.3.0
echo Bar::$my_static . "\n";
$bar = new Bar();
echo $bar->fooStatic() . "\n";
?>

No comments:
Post a Comment