# Something like $$ in php

**URL:** <https://www.ruby-forum.com/t/something-like-in-php/103660>\
**Category:** Rails\
**Created:** [May 8, 2007, 11:52pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660 "2007-05-08T23:52:08Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 8, 2007, 11:52pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/1 "2007-05-08T23:52:08Z")

</div>

Hi all. I have this piece of code: [Parked at Loopia](http://pastie.caboo.se/59971). How  
can I use the string in ‘name’ to use as a method of declaration?

$methodname = ‘new’  
Just like using $obj-\>$methodname in php?

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 12:02am UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/2 "2007-05-09T00:02:09Z")

</div>

> Hi all. I have this piece of code: [Parked at Loopia](http://pastie.caboo.se/59971). How  
> can I use the string in ‘name’ to use as a method of declaration?

obj = MyObject.new  
meth = “my\_method”  
obj.send(meth) # same as obj.my\_method

-philip

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 3:06am UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/3 "2007-05-09T03:06:19Z")

</div>

You could get in a lot of trouble for sending meth.

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:49pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/4 "2007-05-09T14:49:29Z")

</div>

Use a variable function ie

$func = “calculate”;

$result = $func();

On 5/9/07, LeonB [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> thing\_some\_method()
> 
> Is there a simple way to do that?
> 
> I thought about using alias\_method. Would that be a good idea? Or can  
> it be done simpeler?
> 
> >

–  
[http://www.web-buddha.co.uk](http://www.web-buddha.co.uk)

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:53pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/5 "2007-05-09T14:53:30Z")

</div>

Thanks. But could I create the function “calculate” on the fly?

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:45pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/6 "2007-05-09T14:45:29Z")

</div>

Thanks for the replies.

What I also want, is to create a function with a variable name.

So if meth = ‘thing’

I want to create a method like

thing\_some\_method()

Is there a simple way to do that?

I thought about using alias\_method. Would that be a good idea? Or can  
it be done simpeler?

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:54pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/7 "2007-05-09T14:54:31Z")

</div>

This might be not what you want, but how about using Proc instances  
stored in a hash:

procs[:some\_action1] = lambda{ |a,b|  
a + b  
}

procs[:some\_action2] = lambda{ |a,b|  
a - b  
}

puts procs[:some\_action1].call(2,5)  
puts procs[:some\_action2].call(2,5)

Cheers,  
Yuri

On 5/9/07, LeonB [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Is there a simple way to do that?
> 
> I thought about using alias\_method. Would that be a good idea? Or can  
> it be done simpeler?
> 
> >

–  
Best regards,  
Yuri L.

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:58pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/8 "2007-05-09T14:58:31Z")

</div>

One more possible solution:

[http://www.ruby-doc.org/core/classes/Module.html#M001677](http://www.ruby-doc.org/core/classes/Module.html#M001677)

On 5/9/07, Yuri L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> }
> 
> > Thanks for the replies.
> 
> Yuri L.

–  
Best regards,  
Yuri L.

---

<div class="post-metadata">

**Author:** ![leonb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/22d042/32.png) [@leonb](https://www.ruby-forum.com/u/leonb)\
**Post date:** [May 9, 2007, 2:58pm UTC](https://www.ruby-forum.com/t/something-like-in-php/103660/9 "2007-05-09T14:58:31Z")

</div>

I’m not sure if I follow but would object#send :thing work?
