PHP 4 already has an overloaded syntax to map external object models, just like Java and COM. PHP5 brings powerful object-oriented overloading, allowing programmers to establish custom actions to visit attributes and call methods. You can use the _ get and PHP4 overload syntax to create a ING of the external object model, just like Java and COM. PHP5 brings powerful object-oriented overloading, allowing programmers to establish custom actions to visit attributes and call methods.
You can use several special methods of _ get, _ set, and _ call for overloading. PHP will call these methods when the Zend Engine tries to visit a member and does not find them.
In the following example, __get and _ set replace all visits to the attribute variable array. if necessary, you can implement any type of filter you want. for example, the script can disable attribute value setting and use a certain prefix or contain a certain type of value at the beginning.
The _ call method clarifies how you call an undefined method. when you call an undefined method, the method name and parameters received by the method will be passed to the _ call method, and the value of _ call passed by PHP will be returned to the undefined method.
Listing1 User-level overloading
Class Overloader
{
Private $ properties = array ();
Function _ get ($ property_name)
{
If (isset ($ this-> properties [$ property_name])
{
Return ($ this-> properties [$ property_name]);
}
Else
{
Return (NULL );
}
}
Function _ set ($ property_name, $ value)
{
$ This-> properties [$ property_name] = $ value;
}
Function _ call ($ function_name, $ args)
{
Print ('invoking $ function_name () N ');
Print ('arguments :');
Print_r ($ args );
Return (TRUE );
}
}
$ O = new Overloader ();
// Invoke _ set () assigns a value to a non-existent attribute variable and activates _ set ()
$ O-> dynaProp = 'dynamic content ';
// Invoke _ get () activate _ get ()
Print ($ o-> dynaProp. 'N ');
// Invoke _ call () activate _ call ()
$ O-> dynaMethod ('Leon', 'zeev ');
?>