The overload of PHP5.0 object model exploration

Source: Internet
Author: User
Tags access properties object model
php5| objects

There is already an overloaded syntax in PHP4 to build mappings to the external object model, just like Java and COM. PHP5 brings a powerful object-oriented overload that allows programmers to establish custom behavior to access properties and invoke methods.

Overloads can be performed by __get, __set, and __call several special methods. PHP calls these methods when the Zend engine attempts to access a member and is not found.

In the following example, __get and __set Replace all access to an array of property variables. If necessary, you can implement any type of filter you want. For example, a script can disallow setting property values, starting with a certain prefix or containing a certain type of value.

The __call method shows how you can invoke an undefined method. When you call an undefined method, the method name and the parameters received by the method are passed to the __call method, and PHP passes the __call value back 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 nonexistent property variable, activating the __set ()
$o->dynaprop = "Dynamic Content";

Invoke __get () activate __get ()
Print ($o->dynaprop. "N");

Invoke __call () activate __call ()
$o->dynamethod ("Leon", "Zeev");
? >



Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.