Re: [PHP] Re: class problem :(

2009-05-28 Thread Luke
2009/5/29 Shawn McKenzie 

> Luke wrote:
> > Right I've read the manual on this and all that so hopefully you find
> people
> > can help.
> > I have an abstract class with three children. The abstract is ForumObject
> > and the three children are Thread, Category and Post and each have their
> own
> > table so I wrote the following:
> > abstract class ForumObject
> > {
> >   static private $table;
> >
> >   static function getObjectIds ($field, $value)
> >   {
> >   $query = "SELECT id FROM {self::$table} WHERE $field = '$value'";
> >   $object_ids = mysql_fetch_array();
> >   return $object_ids;
> >   }
> > }
> >
> > class Category extends ForumObject
> > {
> >   static private $table = "categories";
> > }
> > That's just got the important bits for the sake of your eyes but
> basically
> > the problem I'm having is calling
> > Category::getObjectIds ($whatever, $whatever2);
> > Seems to think that it's referring to ForumObject::$table rather than
> > Category::$table?
> > I looked into it and there seems to be something you can do with
> > get_called_class() but unfortunately I'm stuck with 5.2.9 at the moment
> and
> > that is new to 5.3.
> > Any ideas? Perhaps there is a different way I could implement the classes
> -
> > I would rather not have getObjectIds repeated three times!
> > Thanks in advance,
>
> I didn't test this, just a thought.  You'd still have to implement
> getObjectIds(), but it would be slim:
>
> abstract class ForumObject
> {
>  static private $table;
>
>   static function getObjectIds ($field, $value, $class)
>  {
>$query = "SELECT id FROM {$class::$table} WHERE $field = '$value'";
> $object_ids = mysql_fetch_array();
>return $object_ids;
>  }
> }
>
> class Category extends ForumObject
> {
>   static private $table = 'categories';
>
>  static function getObjectIds ($field, $value)
>  {
> parent::getObjectIds ($field, $value, __CLASS__)
>  }
> }
>
> Or probably the same because you're defining $table anyway in the child
> class:
>
> abstract class ForumObject
> {
>  static private $table;
>
>   static function getObjectIds ($field, $value, $table)
>  {
>$query = "SELECT id FROM $table WHERE $field = '$value'";
> $object_ids = mysql_fetch_array();
>return $object_ids;
>  }
> }
>
> class Category extends ForumObject
> {
>   static private $table = 'categories';
>
>  static function getObjectIds ($field, $value)
>  {
> parent::getObjectIds($field, $value, self::$table)
>  }
> }
>
> --
> Thanks!
> -Shawn
> http://www.spidean.com
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
Ah that looks like the perfect solution! Trying now!
Many thanks!

-- 
Luke Slater
http://dinosaur-os.com/
:O)


[PHP] Re: class problem :(

2009-05-28 Thread Shawn McKenzie
Luke wrote:
> Right I've read the manual on this and all that so hopefully you find people
> can help.
> I have an abstract class with three children. The abstract is ForumObject
> and the three children are Thread, Category and Post and each have their own
> table so I wrote the following:
> abstract class ForumObject
> {
>   static private $table;
> 
>   static function getObjectIds ($field, $value)
>   {
>   $query = "SELECT id FROM {self::$table} WHERE $field = '$value'";
>   $object_ids = mysql_fetch_array();
>   return $object_ids;
>   }
> }
> 
> class Category extends ForumObject
> {
>   static private $table = "categories";
> }
> That's just got the important bits for the sake of your eyes but basically
> the problem I'm having is calling
> Category::getObjectIds ($whatever, $whatever2);
> Seems to think that it's referring to ForumObject::$table rather than
> Category::$table?
> I looked into it and there seems to be something you can do with
> get_called_class() but unfortunately I'm stuck with 5.2.9 at the moment and
> that is new to 5.3.
> Any ideas? Perhaps there is a different way I could implement the classes -
> I would rather not have getObjectIds repeated three times!
> Thanks in advance,

I didn't test this, just a thought.  You'd still have to implement
getObjectIds(), but it would be slim:

abstract class ForumObject
{
  static private $table;

  static function getObjectIds ($field, $value, $class)
  {
$query = "SELECT id FROM {$class::$table} WHERE $field = '$value'";
$object_ids = mysql_fetch_array();
return $object_ids;
  }
}

class Category extends ForumObject
{
  static private $table = 'categories';

  static function getObjectIds ($field, $value)
  {
parent::getObjectIds ($field, $value, __CLASS__)
  }
}

Or probably the same because you're defining $table anyway in the child
class:

abstract class ForumObject
{
  static private $table;

  static function getObjectIds ($field, $value, $table)
  {
$query = "SELECT id FROM $table WHERE $field = '$value'";
$object_ids = mysql_fetch_array();
return $object_ids;
  }
}

class Category extends ForumObject
{
  static private $table = 'categories';

  static function getObjectIds ($field, $value)
  {
parent::getObjectIds($field, $value, self::$table)
  }
}

-- 
Thanks!
-Shawn
http://www.spidean.com

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



[PHP] Re: class Problem

2002-09-17 Thread lallous

Hi,

when you want to access class member variables prefix them with $this-> ,
otherwise they will be treated as local vars.

hope that helps.

Elias


"David Eggler" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> I create a Instance fo the Class MenueItem in Menue. I change the value of
> one of its variables. But when i call the function within MenueItem there
> seems not to be a value:
> The intresting thing is it works with Other variables, even i cant echo
> them, they have a value
>
> Thanks for help
>
> class Menue {
>
> function Makechilde($somvalue) {
> echo "Next_ID: " . $Parent_ID . ""; //Works
> $MI->Parent_ID = $Parent_ID;
> echo "Parent_ID: " . $MI->Parent_ID . "";//correct output
> $MI->write();
>
> }
> }
>
> class MenueItem {
> var $ID_Menue;
> var $Name;
> var $Parent_ID;
> var $Next_ID;
> var $Prev_ID;
>
>
> function Write() {
> echo "Parent_ID: " . $MI->Parent_ID . "";
> //(no output at all!)
> }
>
> }
>



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