Re: Global Annoyance

From: Date: Mon, 18 Dec 2000 22:49:36 +0000
Subject: Re: Global Annoyance
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-30954@lists.php.net to get a copy of this message
Yes. For the record, I don't want to see an auto_global. If you need to use read-only data throughout your script without using global variables, you can use define()s. 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, Toby Butzon wrote: > Date: Mon, 18 Dec 2000 17:46:20 -0500 > From: Toby Butzon <php-lists@imawebdesigner.com> > To: jeremy brand <jeremy@nirvani.net>, Rasmus Lerdorf <rasmus@php.net> > Cc: Bill.Hoffman@walgreens.com, php-general@lists.php.net > Subject: Re: [PHP] Global Annoyance > > 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 > : > : > > > -- > 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 (#30954) next »