Re: [PHP] class variables and methods

2001-08-19 Thread Tom Carter

There was a long discussion on this in a java forum I am part of, the
product of which was basically this...

1. All variables in a class are best left to be private (not sure PHP has
this, but the programmer can work the principle in mind.. that is only the
class can access them).
2. Generic variable access/store methods should be avoided - the principle
is that the internal variable can change name etc. without the external
interface having to worry about it.
3. Method to set/fetch each variable - it may seem a counter intuitive way
of doing it, especially when it is possible to do something nice like the
set method below. This seems a very un-web way.. and this is where a
difference comes in. Web is not inherently OO, and a lot of the practices of
web programmers are at conflict with more traditional apps programmers.
Web tends to go for speed and simplicity, rather than good design etc.
4. Some situations could theoretically arise where it is necessary to set an
unknown amount of variables within a class, however it would be far more
sensible to put these into an array.

In summary, in good OOP you should have a method for every get/set operation
on variables that is required, using arrays as appropiate.

Going back to the original point on whether or not to access the variable
directly or build a set function in, they are both as bad as each other,
just about. They both access variables directly and require the outside
program to have knowledge of variable names etc. and it doesn't allow for
checking for correct values being set ( a useful thin with the above
method)

Hope this helps, let me know if I can provide any more advice.

Tom

- Original Message -
From: Andrew Libby [EMAIL PROTECTED]
To: Joe Sheble (Wizaerd) [EMAIL PROTECTED]
Cc: General PHP List [EMAIL PROTECTED]
Sent: Sunday, August 19, 2001 3:34 AM
Subject: Re: [PHP] class variables and methods


 Joe,
 There are varying opinions on this issue.  The argument for
 methods is that it hides the internal structure of your class.  This
 is always a good thing.  This means that the internals of the class
 can be changed, but the user interface (the user is the programmer here)
 does not change.  So this alternative implementation of someclass


 class someclass

 var $data = false;

 function set($key,$val) {
 $this-data[$key] = $val;
 }
 }

 is no different the the calling code.  In general, I tend to have an
 accessor/mutator method for each 'property' that I would like to
 provide access to.  I'd have a method for each $key that I want to
 support (this may not apply in your case).

 class someclass

 var $name = false;
 var $age  = false;

 function name()

 if(func_num_args()) $this-name = func_get_arg(0);
 return $this-name;
 }

 function age()

 if(func_num_args()) $this-age= func_get_arg(0);
 return $this-age;
 }
 }

 Now, this gets a big annoying to code since the lions share of my
 classes have the name method implementations.  I've been hunting
 for a way to create methods dynamically, but I've only found one.
 To create class definitions on the fly and eval() them.  This
 works great when you've got a huge number of properties
 (class/instance vars).  I'll construct a static method on the
 class that processes examines the class vars (get_class_vars())
 and defines a class extending my implementation.   The
 sub class has the methods implemented for accessing/mutating
 the properties I'd like to have methods for.  If anyone knows
 of a means to do this to an existing class (say using create_function()
 or something), I'd love to hear about it.

 Andy


 On Sat, Aug 18, 2001 at 07:09:08PM -0700, Joe Sheble (Wizaerd) wrote:
  I've been doing some reading up on OOP in PHP, and looking at some of
the
  classes available on the web, and I've got what is probably a stupid
  question.  I've seen this many many times..
 
  class someclass {
  var $somevar = someval;
 
  function set( $key, $val ) {
  $this-$key = $val;
  }
  }
 
  $myClass = new someclass;
  $myClass-set( somevar, someotherval );
 
  why write a set method when you can just as easily call
  $myClass-somevar = someotherval;
 
  Is there a reason for this?
 
  Also, alot of the different table classes (an OOP approach to HTML
tables)
  stores the data in arrays, but at what point is it too much to store
into an
  array?  Say you have a forum and the text entered for a single respone
could
  be quite lengthy, much less for 100 replies...  wouldn't that be a bit
much
  to store into an array?  I know it depends on the system resources, but
is
  there a practical limit that people follow?
 
 
 
  --
  PHP General Mailing List (http://www.php.net/)
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
  To contact the list administrators, e-mail: [EMAIL PROTECTED]
 

 --
 --
 Andrew Libby
 Director

RE: [PHP] class variables and methods

2001-08-19 Thread Joe Sheble \(Wizaerd\)


But when designing classes, isn't it normal to have private and public
variables or properties.  Granted my OOP experience is very limited, having
access to OOP development in CA-Visual Objects, Clipper, VB, and ASP.  But
it was normal to have a series of public properties one could access
directly and then properties that could only be access by the class itself.
Of course in VB and ASP these were defined with Get, Let and Set methods,
but you could still access them directly.  You could also design properties
that were read only as well.  Perhaps this is because of operator
overloading??

 -Original Message-
 From: Tom Carter [mailto:[EMAIL PROTECTED]]
 Sent: Sunday, August 19, 2001 2:19 AM
 To: Andrew Libby; Joe Sheble (Wizaerd)
 Cc: General PHP List
 Subject: Re: [PHP] class variables and methods


 There was a long discussion on this in a java forum I am part of, the
 product of which was basically this...

 1. All variables in a class are best left to be private (not sure PHP has
 this, but the programmer can work the principle in mind.. that is only the
 class can access them).
 2. Generic variable access/store methods should be avoided - the principle
 is that the internal variable can change name etc. without the external
 interface having to worry about it.
 3. Method to set/fetch each variable - it may seem a counter intuitive way
 of doing it, especially when it is possible to do something
 nice like the
 set method below. This seems a very un-web way.. and this is where a
 difference comes in. Web is not inherently OO, and a lot of the
 practices of
 web programmers are at conflict with more traditional apps programmers.
 Web tends to go for speed and simplicity, rather than good design etc.
 4. Some situations could theoretically arise where it is
 necessary to set an
 unknown amount of variables within a class, however it would be far more
 sensible to put these into an array.

 In summary, in good OOP you should have a method for every
 get/set operation
 on variables that is required, using arrays as appropiate.

 Going back to the original point on whether or not to access the variable
 directly or build a set function in, they are both as bad as each other,
 just about. They both access variables directly and require the outside
 program to have knowledge of variable names etc. and it doesn't allow for
 checking for correct values being set ( a useful thin with the above
 method)

 Hope this helps, let me know if I can provide any more advice.

 Tom

 - Original Message -
 From: Andrew Libby [EMAIL PROTECTED]
 To: Joe Sheble (Wizaerd) [EMAIL PROTECTED]
 Cc: General PHP List [EMAIL PROTECTED]
 Sent: Sunday, August 19, 2001 3:34 AM
 Subject: Re: [PHP] class variables and methods


  Joe,
  There are varying opinions on this issue.  The argument for
  methods is that it hides the internal structure of your class.  This
  is always a good thing.  This means that the internals of the class
  can be changed, but the user interface (the user is the programmer here)
  does not change.  So this alternative implementation of someclass
 
 
  class someclass

  var $data = false;
 
  function set($key,$val) {
  $this-data[$key] = $val;
  }
  }
 
  is no different the the calling code.  In general, I tend to have an
  accessor/mutator method for each 'property' that I would like to
  provide access to.  I'd have a method for each $key that I want to
  support (this may not apply in your case).
 
  class someclass

  var $name = false;
  var $age  = false;
 
  function name()

  if(func_num_args()) $this-name = func_get_arg(0);
  return $this-name;
  }
 
  function age()

  if(func_num_args()) $this-age= func_get_arg(0);
  return $this-age;
  }
  }
 
  Now, this gets a big annoying to code since the lions share of my
  classes have the name method implementations.  I've been hunting
  for a way to create methods dynamically, but I've only found one.
  To create class definitions on the fly and eval() them.  This
  works great when you've got a huge number of properties
  (class/instance vars).  I'll construct a static method on the
  class that processes examines the class vars (get_class_vars())
  and defines a class extending my implementation.   The
  sub class has the methods implemented for accessing/mutating
  the properties I'd like to have methods for.  If anyone knows
  of a means to do this to an existing class (say using create_function()
  or something), I'd love to hear about it.
 
  Andy
 
 
  On Sat, Aug 18, 2001 at 07:09:08PM -0700, Joe Sheble (Wizaerd) wrote:
   I've been doing some reading up on OOP in PHP, and looking at some of
 the
   classes available on the web, and I've got what is probably a stupid
   question.  I've seen this many many times..
  
   class someclass {
   var $somevar = someval;
  
   function set( $key, $val ) {
   $this-$key = $val;
   }
   }
  
   $myClass

Re: [PHP] class variables and methods

2001-08-19 Thread Tom Carter

There is a distinct chance of many difference schools of thought... my
background is Java (mostly at IBM.. so of course could be very different)..
but all the java gurus I've known have worked on the principle private
variable and public methods.. declaring all variables (except constants..
php doesn't really have a comparably concept) as private and always using
methods.

I would be very interested to hear others opinion on this...



 But when designing classes, isn't it normal to have private and public
 variables or properties.  Granted my OOP experience is very limited,
having
 access to OOP development in CA-Visual Objects, Clipper, VB, and ASP.  But
 it was normal to have a series of public properties one could access
 directly and then properties that could only be access by the class
itself.
 Of course in VB and ASP these were defined with Get, Let and Set methods,
 but you could still access them directly.  You could also design
properties
 that were read only as well.  Perhaps this is because of operator
 overloading??

  -Original Message-
  From: Tom Carter [mailto:[EMAIL PROTECTED]]
  Sent: Sunday, August 19, 2001 2:19 AM
  To: Andrew Libby; Joe Sheble (Wizaerd)
  Cc: General PHP List
  Subject: Re: [PHP] class variables and methods
 
 
  There was a long discussion on this in a java forum I am part of, the
  product of which was basically this...
 
  1. All variables in a class are best left to be private (not sure PHP
has
  this, but the programmer can work the principle in mind.. that is only
the
  class can access them).
  2. Generic variable access/store methods should be avoided - the
principle
  is that the internal variable can change name etc. without the external
  interface having to worry about it.
  3. Method to set/fetch each variable - it may seem a counter intuitive
way
  of doing it, especially when it is possible to do something
  nice like the
  set method below. This seems a very un-web way.. and this is where a
  difference comes in. Web is not inherently OO, and a lot of the
  practices of
  web programmers are at conflict with more traditional apps
programmers.
  Web tends to go for speed and simplicity, rather than good design etc.
  4. Some situations could theoretically arise where it is
  necessary to set an
  unknown amount of variables within a class, however it would be far more
  sensible to put these into an array.
 
  In summary, in good OOP you should have a method for every
  get/set operation
  on variables that is required, using arrays as appropiate.
 
  Going back to the original point on whether or not to access the
variable
  directly or build a set function in, they are both as bad as each other,
  just about. They both access variables directly and require the outside
  program to have knowledge of variable names etc. and it doesn't allow
for
  checking for correct values being set ( a useful thin with the above
  method)
 
  Hope this helps, let me know if I can provide any more advice.
 
  Tom
 
  - Original Message -
  From: Andrew Libby [EMAIL PROTECTED]
  To: Joe Sheble (Wizaerd) [EMAIL PROTECTED]
  Cc: General PHP List [EMAIL PROTECTED]
  Sent: Sunday, August 19, 2001 3:34 AM
  Subject: Re: [PHP] class variables and methods
 
 
   Joe,
   There are varying opinions on this issue.  The argument for
   methods is that it hides the internal structure of your class.  This
   is always a good thing.  This means that the internals of the class
   can be changed, but the user interface (the user is the programmer
here)
   does not change.  So this alternative implementation of someclass
  
  
   class someclass
 
   var $data = false;
  
   function set($key,$val) {
   $this-data[$key] = $val;
   }
   }
  
   is no different the the calling code.  In general, I tend to have an
   accessor/mutator method for each 'property' that I would like to
   provide access to.  I'd have a method for each $key that I want to
   support (this may not apply in your case).
  
   class someclass
 
   var $name = false;
   var $age  = false;
  
   function name()
 
   if(func_num_args()) $this-name = func_get_arg(0);
   return $this-name;
   }
  
   function age()
 
   if(func_num_args()) $this-age= func_get_arg(0);
   return $this-age;
   }
   }
  
   Now, this gets a big annoying to code since the lions share of my
   classes have the name method implementations.  I've been hunting
   for a way to create methods dynamically, but I've only found one.
   To create class definitions on the fly and eval() them.  This
   works great when you've got a huge number of properties
   (class/instance vars).  I'll construct a static method on the
   class that processes examines the class vars (get_class_vars())
   and defines a class extending my implementation.   The
   sub class has the methods implemented for accessing/mutating
   the properties I'd like to have methods

[PHP] class variables and methods

2001-08-18 Thread Joe Sheble \(Wizaerd\)

I've been doing some reading up on OOP in PHP, and looking at some of the
classes available on the web, and I've got what is probably a stupid
question.  I've seen this many many times..

class someclass {
var $somevar = someval;

function set( $key, $val ) {
$this-$key = $val;
}
}

$myClass = new someclass;
$myClass-set( somevar, someotherval );

why write a set method when you can just as easily call
$myClass-somevar = someotherval;

Is there a reason for this?

Also, alot of the different table classes (an OOP approach to HTML tables)
stores the data in arrays, but at what point is it too much to store into an
array?  Say you have a forum and the text entered for a single respone could
be quite lengthy, much less for 100 replies...  wouldn't that be a bit much
to store into an array?  I know it depends on the system resources, but is
there a practical limit that people follow?



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




Re: [PHP] class variables and methods

2001-08-18 Thread Andrew Libby

Joe,
There are varying opinions on this issue.  The argument for 
methods is that it hides the internal structure of your class.  This
is always a good thing.  This means that the internals of the class
can be changed, but the user interface (the user is the programmer here)
does not change.  So this alternative implementation of someclass


class someclass { 
var $data = false;

function set($key,$val) {
$this-data[$key] = $val;
}
}

is no different the the calling code.  In general, I tend to have an
accessor/mutator method for each 'property' that I would like to 
provide access to.  I'd have a method for each $key that I want to 
support (this may not apply in your case).

class someclass { 
var $name = false;
var $age  = false;

function name() { 
if(func_num_args()) $this-name = func_get_arg(0);
return $this-name;
}

function age() { 
if(func_num_args()) $this-age= func_get_arg(0);
return $this-age;
}
}

Now, this gets a big annoying to code since the lions share of my 
classes have the name method implementations.  I've been hunting
for a way to create methods dynamically, but I've only found one. 
To create class definitions on the fly and eval() them.  This 
works great when you've got a huge number of properties 
(class/instance vars).  I'll construct a static method on the 
class that processes examines the class vars (get_class_vars())
and defines a class extending my implementation.   The 
sub class has the methods implemented for accessing/mutating
the properties I'd like to have methods for.  If anyone knows
of a means to do this to an existing class (say using create_function()
or something), I'd love to hear about it.

Andy


On Sat, Aug 18, 2001 at 07:09:08PM -0700, Joe Sheble (Wizaerd) wrote:
 I've been doing some reading up on OOP in PHP, and looking at some of the
 classes available on the web, and I've got what is probably a stupid
 question.  I've seen this many many times..
 
 class someclass {
   var $somevar = someval;
 
   function set( $key, $val ) {
   $this-$key = $val;
   }
 }
 
 $myClass = new someclass;
 $myClass-set( somevar, someotherval );
 
 why write a set method when you can just as easily call
 $myClass-somevar = someotherval;
 
 Is there a reason for this?
 
 Also, alot of the different table classes (an OOP approach to HTML tables)
 stores the data in arrays, but at what point is it too much to store into an
 array?  Say you have a forum and the text entered for a single respone could
 be quite lengthy, much less for 100 replies...  wouldn't that be a bit much
 to store into an array?  I know it depends on the system resources, but is
 there a practical limit that people follow?
 
 
 
 -- 
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 To contact the list administrators, e-mail: [EMAIL PROTECTED]
 

-- 
--
Andrew Libby
Director of Technology
CommNav, Inc
[EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]