Thursday, December 24, 2009

PHP Tutorial- Advanced Class Concepts

This chapter will be focusing on some advanced class concepts, which will empower the reader to use classes in a better way and to create dynamic web pages.


Constructor


In PHP 5 developers can declare constructor methods for classes. In this, those classes which have a constructor method call this method for each newly created object. So, it is suitable for any initialization that the object may need before it is used. In this the parent constructors are not called implicitly if the child class defines a constructor.









Example

<?php

class ParentClass {


function __construct() {


print "In ParentClass constructorn";


}


}


class ChildClass extends ParentClass {


function __construct() {


parent::__construct();


print "In ChildClass constructorn";


}


}


$obj = new ParentClass();


$obj = new ChildClass();


?>

 

 


Destructors


The destructor concept is introduced in PHP 5. This destructor concept is similar to other object oriented languages. In this the destructor will be called as soon as all references to a particular object have been removed or when the object has been explicitly destroyed.









Example

<?php


class MyClass {


function __construct() {


print "In constructorn";


$this->name = "MyClass";


}


function __destruct() {


print "Destroying " . $this->name . "n";


}


}


$obj = new MyClass();


?>

 

Patterns


Patterns are ways to describe best practices and good designs. The patterns show a flexible solution to common programming problems.


Factory Pattern


In the factory pattern the objects are instantiated at runtime. It is called a factory pattern since it is responsible for manufacturing an object. A parameterized factory receives the name of the class to instantiate as argument.







Example

<?php


class Welcome


{


// The parameterized factory method


public static function factory($type)


{


if (include_once 'Drivers/' . $type . '.php') {


$classname = 'Driver_' . $type;


return new $classname;


} else {


throw new Exception ('Driver not found');


}


}


}


?>

No comments:

Post a Comment