PHP Classes
elePHPant
Icontem

PHP Public Wrap: Access an object private variables and functions

Recommend this page to a friend!
  Info   View files View files (4)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2013-05-22 (3 years ago) RSS 2.0 feedNot enough user ratingsTotal: 307 All time: 6,925 This week: 935Up
Version License PHP version Categories
public-wrap 1.0BSD License5.3PHP 5, Language, Testing
Description Author

This class can access an object private attributes and methods.

It takes a given object and uses reflection to access its private attributes and methods from outside.

The class implements __set, __get and __call methods to provide the access to the wrapped object externally.

Picture of Ninsuo
  Performance   Level  
Name: Ninsuo <contact>
Classes: 2 packages by
Country: France France

Details
PublicWrap
Set properties and methods visibility to public

This class doesn't change behaviour of your original object : it only wraps property
and method calls to make them visibles using reflection.

This is useful when you're doing unit tests on protected and private methods, or
if you want to mock a protected/private dependancy of an object.

--- Quick usage sample :

class A {
   private $x = 42;
}

Normal behaviour :

   $test = new A();
   echo $test->x; // fatal error: $x is private

With PublicWrap :

   $test = new A();
   $proxy = new PublicWrap($test);
   echo $test->x; // 42

See demo for more details (works with private and protected methods and properties).

--------- How does it work ?

PHP has magic methods:

    __get($property) let us implement the access of a $property on an object
    __set($property, $value) let us implement the assignation of a $property on an object
    __call($method, $args) let us implement a $method call

PHP has reflectiion classes:

    Reflection is a powerful tool that let us access internal constructs of classes in PHP.

--------- Changelog

1.0 *** Original version ***

  Files folder image Files  
File Role Description
Plain text file PublicWrap.php Class Core class
Accessible without login Plain text file PublicWrap.demo.php Example Demo: a full usage example
Accessible without login Plain text file readme.txt Doc. Documentation
Accessible without login Plain text file PublicWrap.test.php Test PHPUnit tests

 Version Control Unique User Downloads Download Rankings  
 0%
Total:307
This week:0
All time:6,925
This week:935Up