Re: Global Annoyance
| From: | Toby Butzon | 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
:
: