FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs [message #178793 is a reply to message #178789] Sat, 04 August 2012 18:24 Go to previous messageGo to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma:
Senior Member
On 8/3/2012 1:45 PM, J. Frank Parnell wrote:
> <?php
> class test{
> function __construct(){
> $this->makevar();
> global $var;
> echo '<hr>__const(): '.$var;
> }
> function makevar(){
> $var = 'something';
> echo '<hr>just declared in makevar(): '.$var;
> global $var;
> echo '<hr>after global in makevar(): '.$var;
> }
> }//class
>
> $t = new test;
> echo '<hr>outside class: '.$var;
> global $var;
> echo '<hr>outside class after global: '.$var;
>
> ?>
> this outputs:
> just declared in makevar(): something
> after global in makevar(): [nothing]
> __const():[nothing]
> outside class: [nothing]
> outside class after global: [nothing]
>
>
> So, 1, why does global $var in the makevar() make it null?
> and B, why dont I have any access to $var in the __constructor or outside the class?
>
> In the real script, $var will be an instance of a different class that I want to use all over the place.
>
> thanks, J
>

And what if you have:

$t1 = new test;
$t2 = new test;

Which variable are you supposed to be referencing (they are two
different variables)?

But what you're doing violates several concepts in OO programming,
including encapsulation and message passing. The correct way to do it
is to pass an object of the class as a parameter (i.e. to the
constructor) then use getters and setters to reference the variable.
Proper coding makes your code more reliable, maintainable, reusable and
easier to understand.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: str_replace, replace array with string AND array
Next Topic: Excellent new opportunity for developers to monetize more with their Apps.
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Fri Sep 20 11:35:25 GMT 2024

Total time taken to generate the page: 0.04183 seconds