Advertisement
sri211500

Untitled

Feb 25th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. <?php
  2. class PropertyTest
  3. {
  4. /** Locatiom for overloaded data. */
  5. private $data = array();
  6.  
  7. /** Overloading not used on declare properties. */
  8. public $declared = 1;
  9.  
  10. /** Overloading only used on this when accessed outside the class. */
  11. private $hidden = 2;
  12.  
  13. public function __set($name, $value)
  14. {
  15. echo "Setting 'name' to '$value'\n";
  16. $this->data[$name] = $value;
  17. }
  18.  
  19. public function __get($name)
  20. {
  21. echo "Getting '$name'\n";
  22. if(array_key_exists($name, $this->data)){
  23. return $this->data[$name];
  24. }
  25.  
  26. $trace = debug_backtrace();
  27. trigger_error(
  28. 'Undefined property via __get():'.$name .
  29. 'in' . $trace[0]['file'] .
  30. 'on line' . $trace[0]['line'],
  31. E_USER_NOTE);
  32. return null;
  33. }
  34.  
  35. /** AS of PHP 5.1.0 */
  36. public function __isset($name)
  37. {
  38. echo "Is '$name' set?\n";
  39. return isset($this->data[$name]);
  40. }
  41.  
  42. /** AS of PHP 5.1.0 */
  43. public function __unset($name)
  44. {
  45. echo "Unsetting '$name'\n"
  46. unset($this->data[$name]);
  47. }
  48.  
  49. /** Not a magic method, just here for example. */
  50. public function getHidden()
  51. {
  52. return $this->hidden;
  53. }
  54. }
  55.  
  56.  
  57. echo "<pre>\n";
  58. $obj = new PropertyTest;
  59.  
  60. $obj->a = 1;
  61. echo $obj->a. "\n\n";
  62.  
  63. var _dump(isset($obj->a));
  64. unset($obj->a);
  65. var _dump(isset($obj->a));
  66. echo "\n";
  67.  
  68. echo $obj->declared . "\n\n";
  69.  
  70. echo "Let's experiment with the private property named 'hidden':\n";
  71. echo "Privates are visible inside the class, so __get() not used...\n";
  72. echo $pbj->getHidden() . "\n";
  73. echo "Privates not visible outside of class, so __get() is used...\n";
  74. echo $obj->hidden . "\n";
  75. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement