From: "Gary ." on 19 Apr 2010 10:18 On Mon, Apr 19, 2010 at 2:37 PM, Peter Lind <peter.e.lind(a)gmail.com> wrote: > On 19 April 2010 14:24, Gary wrote: >> On Mon, Apr 19, 2010 at 10:36 AM, Peter Lind wrote: >>> So no, you shouldn't be able to do that. >> >> Okay. Why not? > > Hate to ask, but did you at any point consider to read the PHP docs on > this? The bit I sent or what you could gather from the link posted? Yes. The question remains.
From: "Gary ." on 19 Apr 2010 10:29 On Mon, Apr 19, 2010 at 3:12 PM, Ashley Sheridan wrote: > On 19 April 2010 14:24, Gary wrote: > > Okay. Why not? .... > Class constants must be defined with static values, not variables. They are constants after all! If they relied on the value of a variable, surely that would mean that their own value might change, so they would just become regular variables not constants. Right. But in fact the only referenced values are *also* constant (unless I'm completely misunderstanding the use of 'const'), so I think it's a valid thing to want to do. I accept it doesn't seem to be possible, I'm now curious as to the thinking behind it. > Is there a specific reason that you need to try and achieve this? Okay, well here's a more meaningful situation, perhaps: class SomeTable { const TABLE_NAME = 'mytable'; const SELECT = 'SELECT * FROM ' . MyTable::TABLE_NAME; const INSERT = 'INSERT INTO ' . MyTable::TABLE_NAME ... If the table name should change for some reason, it is preferable to make the change in one place in the code (i.e. the value of TABLE_NAME), surely, than changing the name in the alternative, which is something like: class SomeTable { // const TABLE_NAME = 'mytable'; const SELECT = 'SELECT * FROM mytable'; const INSERT = 'INSERT INTO mytable...
From: Peter Lind on 19 Apr 2010 10:25 On 19 April 2010 16:18, Gary . <php-general(a)garydjones.name> wrote: > On Mon, Apr 19, 2010 at 2:37 PM, Peter Lind <peter.e.lind(a)gmail.com> wrote: >> On 19 April 2010 14:24, Gary wrote: >>> On Mon, Apr 19, 2010 at 10:36 AM, Peter Lind wrote: > >>>> So no, you shouldn't be able to do that. >>> >>> Okay. Why not? >> >> Hate to ask, but did you at any point consider to read the PHP docs on >> this? The bit I sent or what you could gather from the link posted? > > Yes. The question remains. > Per the PHP manual: "The value must be a constant expression". Is something that depends on other classes, variables or functions constant? If you're asking why a constant should be constant, I can only point you to Ashleys answer or google. Regards Peter -- <hype> WWW: http://plphp.dk / http://plind.dk LinkedIn: http://www.linkedin.com/in/plind Flickr: http://www.flickr.com/photos/fake51 BeWelcome: Fake51 Couchsurfing: Fake51 </hype>
From: Adam Richardson on 19 Apr 2010 12:22 On Mon, Apr 19, 2010 at 10:25 AM, Peter Lind <peter.e.lind(a)gmail.com> wrote: > On 19 April 2010 16:18, Gary . <php-general(a)garydjones.name> wrote: > > On Mon, Apr 19, 2010 at 2:37 PM, Peter Lind <peter.e.lind(a)gmail.com> > wrote: > >> On 19 April 2010 14:24, Gary wrote: > >>> On Mon, Apr 19, 2010 at 10:36 AM, Peter Lind wrote: > > > >>>> So no, you shouldn't be able to do that. > >>> > >>> Okay. Why not? > >> > >> Hate to ask, but did you at any point consider to read the PHP docs on > >> this? The bit I sent or what you could gather from the link posted? > > > > Yes. The question remains. > > > > Per the PHP manual: "The value must be a constant expression". Is > something that depends on other classes, variables or functions > constant? > If you're asking why a constant should be constant, I can only point > you to Ashleys answer or google. > > Regards > Peter > > -- > <hype> > WWW: http://plphp.dk / http://plind.dk > LinkedIn: http://www.linkedin.com/in/plind > Flickr: http://www.flickr.com/photos/fake51 > BeWelcome: Fake51 > Couchsurfing: Fake51 > </hype> > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > Hi Gary, Sorry for the confusion. I understand your question. For the life of those variables, they would never change If you come from other programming language backgrounds, this can be a bit confusing. In Objective C, the term "constant expression" is one in which every element is a constant, so given the requirement that "The value must be a constant expression", your examples would make sense. Additionally, in languages like Scala, values default to a constant, and you can compose them in a myriad of ways. I don't claim to know the rationale, but once you get used to it, it's not a big deal. I just tend to use classes that allow a value to be set once and only once for these types of situations. Happy coding ;) Adam -- Nephtali: PHP web framework that functions beautifully http://nephtaliproject.com
From: David Harkness on 19 Apr 2010 16:34 On Mon, Apr 19, 2010 at 7:25 AM, Peter Lind <peter.e.lind(a)gmail.com> wrote: > Per the PHP manual: "The value must be a constant expression". Is > something that depends on other classes, variables or functions > constant? > When I came up against this problem myself, I read "a constant expression" to mean "an expression involving only constants". I think that's a fairly reasonable parse of the phrase. Thus I expected to be able to combine other constants using the dot operator as Gary is trying to do. Obviously, it didn't work, and I removed the "base" constant and replicated its value in the other constants--a situation constants were designed to obviate. Gary, you'd probably be better off asking for the technical reason behind this limitation on a -devel list. :) -- David Harkness Senior Software Engineer High Gear Media, Inc.
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 Prev: Mail Function Using PEAR Issues Next: Get Power Saving Settings of the Server |