How can I create a property from a given argument inside a object's method?
class Foo{ public function createProperty($var_name, $val){ // here how can I create a property named "$var_name" // that takes $val as value? } }
And I want to be able to access the property like:
$object = new Foo(); $object->createProperty('hello', 'Hiiiiiiiiiiiiiiii'); echo $object->hello;
Also is it possible that I could make the property public/protected/private ? I know that in this case it should be public, but I may want to add some magik methods to get protected properties and stuff :)
protected $user_properties = array(); public function createProperty($var_name, $val){ $this->user_properties[$var_name] = $val; } public function __get($name){ if(isset($this->user_properties[$name]) return $this->user_properties[$name]; }
do you think it's a good idea?
Use an index signature to dynamically add properties to an object, e.g. const obj: {[key: string]: any} = {} .
You can create custom dynamic objects by using the classes in the System. Dynamic namespace. For example, you can create an ExpandoObject and specify the members of that object at run time. You can also create your own type that inherits the DynamicObject class.
Arrays are objects and therefore you can add your own properties to them: var arr = [1, 2, 3]; arr. foo = 'bar'; Extending from other answers, here are the following ways of iterating over the array, excluding custom properties.
So the best way of adding dynamically created property is the [bracket] method. Show activity on this post. Example: ReadValue("object.
The following example is for those who do not want to declare an entire class.
$test = (object) []; $prop = 'hello'; $test->{$prop} = 'Hiiiiiiiiiiiiiiii'; echo $test->hello; // prints Hiiiiiiiiiiiiiiii
There are two methods to doing it.
One, you can directly create property dynamically from outside the class:
class Foo{ } $foo = new Foo(); $foo->hello = 'Something';
Or if you wish to create property through your createProperty
method:
class Foo{ public function createProperty($name, $value){ $this->{$name} = $value; } } $foo = new Foo(); $foo->createProperty('hello', 'something');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With