PLDB
Languages Features Creators Calendar CSV Resources Blog About Donate Add Language
GitHub icon

Magic Getters and Setters

< >
// Can be implemented in ES6 using proxies: "use strict"; if (typeof Proxy == "undefined") { throw new Error("This browser doesn't support Proxy"); } let original = { "foo": "bar" }; let proxy = new Proxy(original, { get(target, name, receiver) { let rv = Reflect.get(target, name, receiver); if (typeof rv === "string") { rv = rv.toUpperCase(); } return rv; } }); console.log(`original.foo = ${original.foo}`); // "original.foo = bar" console.log(`proxy.foo = ${proxy.foo}`); // "proxy.foo = BAR"
Example from PHP:
public function __set($name, $value) { echo "Setting '$name' to '$value'\n"; $this->data[$name] = $value; } public function __get($name) { echo "Getting '$name'\n"; if (array_key_exists($name, $this->data)) { return $this->data[$name]; } $trace = debug_backtrace(); trigger_error( 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE); return null; }

Languages with Magic Getters and Setters include JavaScript, PHP, TypeScript, Static Typescript

Languages without Magic Getters and Setters include C++, C3, Real-Time Concurrent C

Read more about Magic Getters and Setters on the web: 1.

HTML of this page generated by Features.ts

hasMacros.html 路 hasMagicGettersAndSetters.html 路 hasManualMemoryManagement.html

View source

PLDB - Build the next great programming language Search v2023 Day 157 Docs Acknowledgements Traffic Today Traffic Trends Mirrors GitHub feedback@pldb.com