TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   Advanced PHP Programming (http://www.talkphp.com/advanced-php-programming/)
-   -   Is the double colon var resolution valid in an Argument? (http://www.talkphp.com/advanced-php-programming/2036-double-colon-var-resolution-valid-argument.html)

Orc 01-21-2008 10:17 AM

Is the double colon var resolution valid in an Argument?
 
^^title speaks for itself^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PHP Code:

// yes yes, make the class etc etc
  
class TesterS
  
{
// Make a public constant so its open to the whole class(:S)
    
public const test "Its called a test";
    
    
// Since that value is a Constant and is set we do this, but could this be done
     
public function(self::test)
     {
     return 
self::test;
     }

// end james
  


This is well, pretty much a start where I am in Advanced Programming.. So

This is also speaking for parent::

*!*:-D*!*:-$:-@

Find the errors ;-)

James




UPDATE: oops sorry bout that >.< sorry

xenon 01-21-2008 11:34 AM

Is this a joke of some sort? 'cuz I really don't get it. First of all, the big mistake is that you don't have a name for your method. Next to that, why would you want to do what you just wrote? I don't even want to know whether that is valid or not (but I'm pretty sure it isn't). I would never want to write a function that gets a variable as a parameter and returns it unchanged, but rather just use the damned variable. Especially not with a class constant or static variable, which is always available from within the class is declared, with self::const/$static.

Other than that, you're crazy :-P

Salathe 01-21-2008 11:58 AM

The simple answer to your question is, no. Trying to use a constant of any kind (class or global) will result in a parse error, "syntax error, unexpected T_CONST, expecting T_VARIABLE". The error is pretty self-explanatory, the PHP engine expects a standard, normal, garden-variety variable (a reference or otherwise) as an argument.

If you were to try this with a static variable (public static $test = ... and self::$test as the function argument) then you would also get a parse error, this time saying: "syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting '&' or T_VARIABLE". Again it's clear that PHP really, really only wants a regular variable in there (the T_PAAMAYIM_NEKUDOTAYIM is just a constant for the '::' or T_DOUBLE_COLON operator).

If you tried to use an object property as the argument ($this->test) then I think you can guess the likely outcome from the examples given so far. :-P

In short, you can only use a normal variable ($test) or reference (&$test) as arguments.

Orc 01-21-2008 12:17 PM

Okay, thank you.

Orc 01-21-2008 12:19 PM

Quote:

Originally Posted by xenon (Post 9135)
Is this a joke of some sort? 'cuz I really don't get it. First of all, the big mistake is that you don't have a name for your method. Next to that, why would you want to do what you just wrote? I don't even want to know whether that is valid or not (but I'm pretty sure it isn't). I would never want to write a function that gets a variable as a parameter and returns it unchanged, but rather just use the damned variable. Especially not with a class constant or static variable, which is always available from within the class is declared, with self::const/$static.

Other than that, you're crazy :-P

I screwed the code up cause I was in a hurry.


All times are GMT. The time now is 05:14 PM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0