On Sun, 2009-03-01 at 09:57 -0500, Robert Cummings wrote:
> On Sun, 2009-03-01 at 09:48 -0500, tedd wrote:
> > At 9:21 AM -0500 3/1/09, Robert Cummings wrote:
> > >On Sun, 2009-03-01 at 08:36 -0500, tedd wrote:
> > >>  The OP asked:
> > >>
> > >>  >Is there in PHP something like "use strict" from perl? I find it pretty
> > >>  >annoying to need to run script over and over again just to find out 
> > >> that I
> > >>  >made typo in variable name.
> > >>
> > >>  And I've been waiting for an answer myself, but I haven't seen one.
> > >>
> > >>   From what I remember, in perl if you use "use strict;" it requires to
> > >>  to define your variables (my) before using them. If you make a
> > >>  variable typo in your code, then you'll trigger an error when you try
> > >>  to run it.
> > >>
> > >>   From what I've seen of php, even with using strict error reporting,
> > >>  you can do that all day long without generating an error.
> > >>
> > >>  So the answer appears to be "No, you can't do that in PHP." Is 
> > >>that the answer?
> > >
> > >You can do anything you want... :)
> > 
> > Rob:
> > 
> > Just to show that your words of wisdom don't go unnoticed, see here:
> > 
> > http://php1.net/oop/strict/
> > 
> > That's pretty slick.
> > 
> > Now if I only understood WT* you did, I would be a better programmer for it.
> 
> I used the magic methods __set() and __get() to facilitate error
> handling. These methods fire when a property is not accessible. So when
> the property does not exist these will fire. So first we init the
> properties when we create an instance (I'll discuss this shortly)... to
> init them we are setting them, this fires the __set() method... but
> since we check the value of the private ___init property, we don't fire
> an error in this instance. Future requests for the properties will not
> incurr a hit to __set() or __get() as long as the property is defined.
> If it is not defined then voila, the error fires and we die (we could do
> anything such as fire an exception but I just die for the example).
> 
> With respect to initialization I use func_get_args() so that an
> arbitrary number of parameters can be passed to the constructor. This is
> useful since we don't know the number of properties. I also check if an
> argument is an array. If it is an array then I treat it as a property
> with an initialized value and create and set the property accordingly.
> 
> That's all there is to it.

Oh, I didn't bother, but if someone finds this at all useful, they could
use debug_backtrace() to walk the call stack and output the actual
source file and line number where the illegal property was requested.

Cheers,
Rob.
-- 
http://www.interjinn.com
Application and Templating Framework for PHP


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to