ஃபங்க்சன்
ஓவர்
ரைடிங்க்
சைல்ட் கிளாசில் உள்ள ஃபங்க்சன்கள் அதே ஆர்க்க்யூமெண்ட்
எண்ணிக்கையில் , அதே பெயருடன் பேரண்ட் கிளாசில் உள்ள ஃபங்க்சன்களை ஓவர் ரைட் செய்கின்றன.
பின் வரும் சான்று நிரலில் getTitle,
getPrice ஆகிய ஃபங்க்சன்கள் ஓவர் ரைட் செய்யப்பட்டுள்ளன.
function
getPrice()
{
echo $this->price . "<br/>";
return
$this->price;
}
function
getTitle(){
echo $this->title . "<br/>";
return
$this->title;
}
பப்ளிக்
மெம்பர்கள்.
ஆக்சஸ் ஸ்பெசிஃபையர் குறிப்பிடா விட்டால் எல்லா
ஃபங்கசன்கள் மற்றும் வேரியபிள்கள் டிஃபால்ட் ஆக பப்ளிக் ஆகும்.
அவையாவன பின் வரும் இடங்களில் ஆக்சஸ் செய்யப்படுகின்றது.
1. அந்த கிளாசின் உள்ளே
2. கிளாசின் வெளிப்புறம்.
3. அந்த கிளாசின் சைல்ட் கிளாசில்.
ப்ரைவேட் மெம்பர்கள்
private என்ற ஸ்பெசிஃபையருடன் குறிப்பிடப்படும் வேரியபிள்கள் மற்றும் ஃபங்க்சன்கள் அந்த கிளாசின் உட்புறம் மட்டுமே
ஆக்சஸ் செய்ய இயலும்.
class
MyClass
{
private
$car =
"skoda";
$driver = "SRK";
function
__construct($par) {
// Statements here run every
time
// an instance of the class
// is created.
}
function
myPublicFunction()
{
return("I'm visible!");
}
private
function
myPrivateFunction()
{
return("I'm not visible outside!");
}
}
ப்ரடெக்டட் மெம்பெர்கள்.
Protected
என்ற ஸ்பெசிஃபையருடன் குறிப்பிடப்படும் வேரியபிள்கள் மற்றும் ஃபங்க்சன்கள்
ப்ரடக்டெட் மெம்பர்கள் ஆகும்.
இவை.
அந்த
கிளாசின் உள்ளே மற்றும் அதன் சைல்ட் கிளாஸ் ஆகியவற்றில் ஆக்சஸ் செய்ய இயலும்.
class
MyClass
{
protected
$car =
"skoda";
$driver = "SRK";
function
__construct($par) {
// Statements here run every
time
// an instance of the class
// is created.
}
function
myPublicFunction()
{
return("I'm visible!");
}
protected
function
myPrivateFunction()
{
return("I'm visible in child class!");
}
}
இன்டெர்ஃபேஸ்.
இன்டெர்ஃபேசில்
மெத்தட்களின் அறிவிப்பு மட்டுமிருக்கும். அவை ஒரு கிளாசால் இம்ப்லிமெண்ட் செய்யும்
பொழுது அவற்றின் இம்ப்லிமெண்டேசன் இருக்கும்.
interface
Mail
{
public
function
sendMail();
}
கிளாஸ்
ஆனது
class
Report
implements
Mail
{
// sendMail() Definition goes here
}
கான்ஸ்டண்ட்கள்.
ஒரு
வேரியபிளில் உள்ள மதிப்பை மாற்ற இயலும் . ஆனால் ஒரு கான்ஸ்டண்டில் ஒரு தடவை
மதிப்பிருத்தப்பட்டால் அதன் பின் மாற்ற இயலாது.
class
MyClass
{
const
requiredMargin =
1.7;
function
__construct($incomingValue) {
// Statements here run every
time
// an instance of the class
// is created.
}
}
அப்ஸ்ட்ராக்ட் கிளாஸ்.
Abstract
என்ற கீவேர்டுடன் குறிப்பிடப்படும் கிளாஸ்கள் அப்ஸ்ட்ராக்ட் கிளாஸ் ஆகும்.
இவற்றிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது. ஆனால் இந்த கிளாசை இன்ஹெரிட் செய்து அதற்கு
ஆப்ஜெக்ட் உருவாக்கலாம்.
இதன் உள்ள
அப்ஸ்ட்ராக்ட் மெத்தட்கள் மற்றும் இம்ப்லிமெண்டேசனுடன் கூடிய மெத்தட்கள் இரண்டுமே
இருக்கலாம்.
abstract
class
MyAbstractClass
{
abstract
function
myAbstractFunction()
{
}
}
ஸ்டேட்டிக் கீவேர்டு:
ஓரு
கிளாஸ் மெம்பரை static என்ற கீவேர்டுடன் குறிபிட்டால் அதை அதற்கு ஆப்ஜெக்ட்
உருவாக்கமலேயே அனுக முடியும் அதாவது கிளாஸ் பெயர் கொண்டே அவற்றை ஆக்சஸ் செய்யலாம்.
<?php
class
Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
print
Foo::$my_static
.
"\n";
$foo = new Foo();
print
$foo->staticValue() . "\n";
?>
ஃபைனல் கீவேர்டு
Final
என்ற கீவேர்டுடன் அறிவிக்கபடும் ஃபங்க்சன்களை அதன் சைல்ட் கிளாசில் ஓவர் ரைட்
செய்ய இயலாது.
ஃபைனல்
கீவேர்டுடன் குறிப்பிடபடும் கிளாஸ்களை இன்ஹெரிட் செய்ய இயலாது.
<?php
class
BaseClass
{
public function test() {
echo "BaseClass::test() called<br>";
}
final public function moreTesting() {
echo "BaseClass::moreTesting()
called<br>";
}
}
class
ChildClass
extends
BaseClass
{
public function moreTesting() {
echo "ChildClass::moreTesting()
called<br>";
}
}
?>
பேரண்ட் கன்ஸ்ட்ரக்டரை அழைத்தல்.
சைல்ட்
கிளாசில் கன்ஸ்ட்ரக்டர்களை முதலில் இருந்து எழுதாமல் பேஸ் கன்ஸ்ட்ரகடரை அழைத்து
விட்டு பின்பு கூடுதல் வரிகளை மட்டும் சேர்த்துக் கொள்ளலாம்.
class
Name
{
var
$_firstName;
var
$_lastName;
function
Name($first_name, $last_name) {
$this->_firstName = $first_name;
$this->_lastName = $last_name;
}
function
toString()
{
return($this->_lastName .", " .$this->_firstName);
}
}
class
NameSub1
extends
Name
{
var
$_middleInitial;
function
NameSub1($first_name, $middle_initial, $last_name) {
Name::Name($first_name, $last_name);
$this->_middleInitial = $middle_initial;
}
function
toString()
{
return(Name::toString() . " " . $this->_middleInitial);
}
}
ஒரு
கிளாசின் அதே பெயரை கன்ஸ்ட்ரக்டருக்கு வைக்கலாம். மேல் கண்ட நிரல் அதற்கு சான்றாக
உள்ளது.
நன்றி
முத்து
கார்த்திகேயன் ,மதுரை.
No comments:
Post a Comment