You are here: Re: [PHP] Is their something like $classname::$tablename ? « PHP « IT news, forums, messages
Re: [PHP] Is their something like $classname::$tablename ?

Posted by Andr Pletschette on 03/15/05 17:22

I now solved my third problem as followed, I write the fields of a table
into global Variables.

If anybody has a better (nicer) way of doing this, I would be pleased to
know ;)

/**
* Returns the Fields of a class
*/
static function getFields($classname) {
$tablename = self::getTableName($classname);
return $GLOBALS["fields_of_".$tablename];
}

/**
* Saves the fields of a table in a global Array
*/
static function setFields($tablename, $fields) {
$GLOBALS["fields_of_".$tablename] = $fields;
}

I just don't have a solution for my second problem: I don't want to
supply $classname as Parameter when calling:

testTable::toHtml_table_heading($dbConnect, "testTable");


André


André Pletschette wrote:

> Thanks Jochem, I now solved the problem with your help, the following
> way:
>
> In the parent-class I define:
>
> static function getTableName($classname) {
> if (defined("$classname::TABLE_NAME")) {
> return(constant("$classname::TABLE_NAME"));
> } else {
> throw new Exception("No TABLE_NAME for ".$classname." defined!");
> }
> }
>
> And in each child-class I define, the const TABLE_NAME.
>
> Now I have two more problems:
> - I have to pass the Classname as a parameter to all my static functions:
> for Example: echo testTable::toHtml_table_heading($dbConnect,
> "testTable");
>
> - I need a similar thing for an Array $fields, which contains the
> field descriptions of the class:
> static function toHtml_table_heading($dbConnect, $classname) {
> $result = "\n\t<tr>";
> if (!isset("$classname::$fields")) {
> $classname->intializeClass($dbConnect, $classname);
> }
> ...
>
> Thankyou,
> André
>
>
> Jochem Maas wrote:
>
>> André Pletschette wrote:
>>
>>> Hi,
>>>
>>> I've got one function getTableName() which returns the
>>> Database-Table with the data of a class (see below).
>>>
>>> As you can see it always calls the static $tablename of the subclass
>>> described by $this->classname.
>>
>>
>>
>> I solved this problem by doing the following:
>>
>> abstract class DBTable
>> {
>> // we can't define abstract consts.
>> // but this must be defined in your subclass
>> // const TABLE_NAME = 'xxxxx';
>>
>> // define this func in your subclasses
>> abstract function getTableName();
>> }
>>
>> class C1 extends DBTable
>> {
>> function getTableName()
>> {
>> return self::TABLE_NAME;
>> }
>> }
>>
>> it seems like a crap way of doing it but
>> its very flexible and easy to understand (it just doesn't
>> have that certain 'je ne c'est quoi') - none the less it
>> was born out of a need for major flexibility (for pretty
>> much similar reasons to you - namely generic data objects),
>> anyway it gives you many ways to skin the cat (get the tablename):
>>
>> <?
>>
>> $c = new C1;
>>
>> echo $c->getTableName();
>> echo C1::getTableName();
>> echo C1::TABLE_NAME;
>>
>> $a = 'C1';
>>
>> if (defined("$a::TABLE_NAME")) {
>> echo constant("$a::TABLE_NAME");
>> }
>>
>> if someone has a better way, bring it on :-) I'd love to be
>> able to improve my own code.
>>
>> You may also want to look at the possibility of using class names
>> that are always indentical to the table names - I tried that but
>> I didn't like it.
>>
>>>
>>> Thankyou,
>>> André
>>>
>>> Here the function:
>>>
>>> function getTableName() {
>>> if ($this->classname == "class1") {
>>> return class1::$tablename;
>>> } elseif ($this->classname == "class2") {
>>> return class2::$tablename;
>>> } elseif ($this->classname == "class3") {
>>> return class3::$tablename;
>>> }...
>>> ...
>>> }else {
>>> throw new Exception($this->classname." not found!");
>>> } }
>>>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация