Friday, 1 August 2014
Using anonymous class to instantiate object
use \Domain\ModelOrder as ModelOrder;
class ClassA extends classB
{
public function __construct(Context $context = null)
{
$this->modelOrder = function ($context)
{
return new ModelOrder($context);
};
parent::__construct($context);
}
protected function test()
{
$ordermethodA = $this->modelOrder->getmethodA();
return true;
}
}
Autoloading Classes
Many developers writing object-oriented applications create one PHP source file per class definition. One of the biggest annoyances is having to write a long list of needed includes at the beginning of each script (one for each class).
In PHP 5, this is no longer necessary. You may define an __autoload() function which is automatically called in case you are trying to use a class/interface which hasn't been defined yet. By calling this function the scripting engine is given a last chance to load the class before PHP fails with an error.
Cf. http://php.net/manual/en/language.oop5.autoload.php#language.oop5.autoload
In PHP 5, this is no longer necessary. You may define an __autoload() function which is automatically called in case you are trying to use a class/interface which hasn't been defined yet. By calling this function the scripting engine is given a last chance to load the class before PHP fails with an error.
Example #1 Autoload example
This example attempts to load the classes MyClass1 and MyClass2 from the files MyClass1.php and MyClass2.php respectively.
<?phpfunction __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
Cf. http://php.net/manual/en/language.oop5.autoload.php#language.oop5.autoload
Using Fluent Interface for method chaining
In the fluent interface, one setter method returns the current object ; this is implemented for doing method cascading (or method chaining) ; please refer to wikipedia for further explanation http://en.wikipedia.org/wiki/Fluent_interface
In PHP, one can return the current object by using the $this special variable which represent the instance. Hence return $this;
will make the method return the instance. The example below define a
class Employee and three methods to set its name, surname and salary.
Each return the instance of the Employee class allowing to chain
methods.
<?php
class Employee
{
public $name;
public $surName;
public $salary;
public function setName($name)
{
$this->name = $name;
return $this;
}
public function setSurname($surname)
{
$this->surName = $surname;
return $this;
}
public function setSalary($salary)
{
$this->salary = $salary;
return $this;
}
public function __toString()
{
$employeeInfo = 'Name: ' . $this->name . PHP_EOL;
$employeeInfo .= 'Surname: ' . $this->surName . PHP_EOL;
$employeeInfo .= 'Salary: ' . $this->salary . PHP_EOL;
return $employeeInfo;
}
}
# Create a new instance of the Employee class:
$employee = new Employee();
# Employee Tom Smith has a salary of 100:
echo $employee->setName('Tom')
->setSurname('Smith')
->setSalary('100');
# Display:
# Name: Tom
# Surname: Smith
# Salary: 100
Subscribe to:
Posts (Atom)