Re: Global Annoyance

From: Date: Mon, 18 Dec 2000 22:46:20 +0000
Subject: Re: Global Annoyance
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-30952@lists.php.net to get a copy of this message
I have to say, in my last email I didn't really mention that I completely agree with what Rasmus and Jeremy have said. Maybe the flexibility I just talked about would really just clutter PHP up and add unnecessary garble... I don't know... I'd still like to hear what people have to say about the autoglobal idea. :/ Toby Butzon [ criticism spurs improvement ] ----- Original Message ----- From: "jeremy brand" <jeremy@nirvani.net> To: "Rasmus Lerdorf" <rasmus@php.net> Cc: <Bill.Hoffman@walgreens.com>; <php-general@lists.php.net> Sent: Monday, December 18, 2000 5:42 PM Subject: Re: [PHP] Global Annoyance : Hi Bill, : : For the record, I like having to specify global in each function. : What Rasmus says is true and I believe it does force those less : experienced to think about what they are doing, when otherwise they : might not think about it. : : Yes, I can see how your functions seem messy. When I need to do : something like this, I store things in an array. Say for web_form : validation for example: : : in my HTML: : <input name="form[name]" ... : <input name="form[email]" ... : <input name="form[fav_deer]" ... : : or in PHP setting them specifically: : $form['name'] = 'foo bar clause'; : $form['email'] = 'foo@northpole.com'; : $form['fav_deer'] = 'blitzen'; : : Then when you need to use all of these pieces of data as global, all : you do is this: : : function do_foo() : { : global $form; : : // whatever else : : file://return something; : } : : Hope this helps. : -jeremy brand : : Jeremy Brand :: Sr. Software Engineer :: 408-245-9058 :: jeremy@nirvani.net : http://www.JeremyBrand.com/Jeremy/Brand/Jeremy_Brand.html for more : Get your own Free, Private email at http://www.smackdown.com/ : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : At least for the people who send me mail about a new language that : they're designing, the general advice is: do it to learn about : how to write a compiler. --Dennis Ritchie : : On Mon, 18 Dec 2000, Rasmus Lerdorf wrote: : : > Date: Mon, 18 Dec 2000 15:31:14 -0800 (PST) : > From: Rasmus Lerdorf <rasmus@php.net> : > To: Bill.Hoffman@walgreens.com : > Cc: php-general@lists.php.net : > Subject: Re: [PHP] Global Annoyance : > : > Yes, this is a regular complaint, but let me give you the history on this : > one. : > : > When I was writing the first version of PHP I had a real day job. In this : > real day job I was one of a couple of developers on a very large project. : > And we had a bug. Nobody could find this bug and the deadline was getting : > closer. We single-stepped, we added break points, we debugged for days. : > I finally got extremely stubborn and printed out everything. All 350,000 : > lines of code on a dot-matrix printer and laid out the code in the : > hallways where I worked. I fought with the cleaning crews as I crawled : > along on my hands and knees with different coloured pens and traced : > through everything. After 2 16 hour sessions I found the problem. It was : > a function that changed a global by mistake as a side effect. : > : > At that point I swore that I would never have that problem again. I : > mandated a rule that forced everyone to list the global variables they : > used in comments at the top of every function. However, as I was also : > writing PHP at the time, I had the chance to force this right at the : > language level. If you forgot to declare your variable global then the : > variable would simply be local to the function and the function probably : > wouldn't work as expected, but at least it would not cause weird side : > effects other distant parts of the code and thus a local/global mistake : > would be much much easier to track down. : > : > So that is why this is so. I know it annoys some people, especially : > people who use a lot of global variables, but that is actually a benefit. : > It encourages people to use less global variables and it forces you to : > think about each global variable you use. : > : > PHP is pretty free-form and there aren't too many places where the PHP : > developers have enforced their own views on the PHP users, but this is one : > place where you just have to trust me. In the long run you are better : > off. : > : > -Rasmus : > : > On Mon, 18 Dec 2000 Bill.Hoffman@walgreens.com wrote: : > : > > I would first like to state that I have been using PHP for the last : > > year and think that it is the greatest thing since sliced bread. There is : > > one thing that has been annoying me that I have not found a way around and : > > thought I would find out if there were others like me. I do not like : > > having to declare a variable as global every time I use it in a function. : > > 95% of the time the variables that I use I want to use throughout my whole : > > script. I like to use functions but when I do I must declare all of the : > > variables that I have already declared again in every function. Here is an : > > example in case I am being unclear: : > > : > > function MailIt () { : > > global $rec; : > > global $subject; : > > global $boxstatus; : > > global $box; : > > global $body; : > > # call the mail function to mail admins : > > mail : > > ( : > > "$rec", : > > "$subject", : > > "This E-mail has been sent due to $boxstatus on the currect box $box : > > : > > $body" : > > ) : > > } : > > : > > $rec = me@you.com; : > > $subject = "test subject"; : > > $boxstatus = "down"; : > > $box = "prdbox"; : > > $body = "This is where the body will go"; : > > MailIt (); : > > : > > : > > I would like to have all of my variables available globally unless I specify otherwise. If I wanted to make a second mail function I would have to : > > declare all of these : > > variables all over again. I have had to declare the same variable 5 times in 5 different functions. : > > Let me know if anyone knows a better way to do this. : > > : > > : > > Please respond to me via direct E-mail. The list stopped mailing to me months ago. : > > : > > : > > Thanx, : > > : > > BEH : > > : > > : > > : > > -- : > > PHP General Mailing List (http://www.php.net/) : > > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net : > > For additional commands, e-mail: php-general-help@lists.php.net : > > To contact the list administrators, e-mail: php-list-admin@lists.php.net : > > : > : > : > -- : > PHP General Mailing List (http://www.php.net/) : > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net : > For additional commands, e-mail: php-general-help@lists.php.net : > To contact the list administrators, e-mail: php-list-admin@lists.php.net : > : > : : : -- : PHP General Mailing List (http://www.php.net/) : To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net : For additional commands, e-mail: php-general-help@lists.php.net : To contact the list administrators, e-mail: php-list-admin@lists.php.net : :

« previous php.general (#30952) next »