Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #6721

Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs

From Jerry Stuckle <jstucklex@attglobal.net>
Newsgroups comp.lang.php
Subject Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs
Date 2012-08-04 14:24 -0400
Organization A noiseless patient Spider
Message-ID <jvjpdl$6m8$1@dont-email.me> (permalink)
References <583b8426-bd2f-4d85-babb-a3c0630ef3fb@googlegroups.com>

Show all headers | View raw


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@attglobal.net
==================

Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs "J. Frank Parnell" <juglesh@gmail.com> - 2012-08-03 10:45 -0700
  Re: Globalizing vars in class methods doesnt seem to work, var disappears   after global, var is inaccessible in other methods/funcs "M. Strobel" <sorry_no_mail_here@nowhere.dee> - 2012-08-04 19:18 +0200
  Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs Jerry Stuckle <jstucklex@attglobal.net> - 2012-08-04 14:24 -0400
    Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs Jerry Stuckle <jstucklex@attglobal.net> - 2012-08-04 14:45 -0400
      Re: Globalizing vars in class methods doesnt seem to work, var disappears after global, var is inaccessible in other methods/funcs "J. Frank Parnell" <juglesh@gmail.com> - 2012-08-04 21:08 -0700
        Re: Globalizing vars in class methods doesnt seem to work, var   disappears after global, var is inaccessible in other methods/funcs "J.O. Aho" <user@example.net> - 2012-08-05 08:28 +0200

csiph-web