[php] class in een class mogelijk??

Pagina: 1
Acties:

  • xshredx
  • Registratie: Maart 2001
  • Laatst online: 19-09 22:50
ik ben net wat begonnen met object georiënteerd programmeren in php, en nu ben ik bezig een site te maken waarvoor ik de phplib gebruik, onder andere voor database access...
ook heb ik een navigatie structuur gemaakt die werkt met parents en children... en deze heb ik ook in een class gestopt..; dit werkt ok, maar nu zou ik phplib willen integreren in deze navigatie class (database access en misschien de template class...)
maar ik vind hierover geen informatie... en bij eerste vlugge proberen lukt het niet, maar dat kan best zijn omdat ik niet erg veel ervaring heb met oo programmeren... ik wil er best op zoeken, maar weet niet of het kan, en hoe ik het het best kan aanpakken...

concreet: is het mogelijk om in een class een andere class aan te roepen, of moet ik gaan proberen om deze navigatie class een subklasse te maken van die phplib classes???

voorbeeldje van hoe ik dit zou zien gebeuren::
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
//database access en queries zijn functie in deze klasse, code heb ik hier nu enkel uitgehaald omdat het anders te lang wordt...

class Menu {

        // constructor
    function Menu()
    {
    //initialisatie van enkele variabelen enzo...
    }


    function get_children($id)
    {
        $query = "SELECT id, link FROM $this->table WHERE parent = '$id'";    
        $result = $this->query($query);
        $count = 0;
        while ($row = mysql_fetch_array($result))
        {
            $children[$count]["id"] = $row["id"];        
            $children[$count]["link"] = $row["link"];    
            $count++;
        }
        return $children;
    }
    

// nog ganse boel meer functies
//   .
//   .
//   .
//   .
}
?>

zou ik in deze class nu bijvoorbeeld kunnen invoegen:

$db = new Phplib_DB;
$db->query($sql);

en hoe zou ik dan die phplib klasse moeten includen... gewoon de prepend.php van boven in de phpfile zetten, of moet dit dan in de constructor van mijn menu klasse, of...???


enige help zou super zijn... zoals gezegd: niemand moet voor mij de ganse boel schrijven, maar een opstapje zou leuk zijn...
bedankt...

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Je kan zeggen:

class menu extends ganse

:P

ik weet niet of dat in de goede richting is.

  • xshredx
  • Registratie: Maart 2001
  • Laatst online: 19-09 22:50
ik vreesde al dat ik een subklasse voor de phplib zou moeten maken, maar ik had liever van die phplib afgebleven, en daarom wou ik proberen om gewoon in mijn menu klasse de phplib functies aan te roepen...

dan sla ik morgen maar eens aan het proberen... thanks

  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Yep, je kan gewoon de boel includen. Gebruik iig wel include_once om meerdere keren te includen te voorkomen. Include het pas als je hem nodig hebt.

Het wordt dan dus zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?
//database access en queries zijn functie in deze klasse, code heb ik hier nu enkel uitgehaald omdat het anders te lang wordt...

class Menu {

        // constructor
    function Menu()
    {
    //initialisatie van enkele variabelen enzo...
    }


    function get_children($id)
    {
        $query = "SELECT id, link FROM $this->table WHERE parent = '$id'";
        //Nieuwe stukkie
        if (!is_object($this->_db))
        {
            include_once('class.phplib.php');
            $this->_db = new Phplib_DB;
        }
        $this->_db->query($sql);
        //Einden nieuwe stukkie
        $result = $this->query($query);
        $count = 0;
        // En nu de rest ook met die phplib....
        ........
        return $children;
    }
    

// nog ganse boel meer functies
//   .
//   .
//   .
//   .
}
?>

The box said 'requires Windows 95 or better', so I installed Linux...


  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

php ondersteund geen inner-classes als je dat bedoeld. (class a { private class b { blah blah}; };)

  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 16-06 22:34
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
Hier een voorbeeld van een extend op de phplib:

// Need these for PHPLIB Database class
define("DB_TYPE", $g_ps["core"]["db_type"]);
define("DB_HOST", $g_ps["core"]["db_host"]);
define("DB_NAME", $g_ps["core"]["db_name"]);
define("DB_USER", $g_ps["core"]["db_user"]);
define("DB_PASS", $g_ps["core"]["db_pass"]);

// Loads the database driver specified in the phpshop.cfg file.
require($PS_BASE . "phplib/db_" . DB_TYPE . ".inc");

class ps_DB extends DB_Sql {
  var $Host     = DB_HOST;
  var $Database = DB_NAME;
  var $User     = DB_USER;
  var $Password = DB_PASS;

  function( ....
?>

Die $g_ps... komen uit een config file.

Het kan altijd mooier en beter...


  • xshredx
  • Registratie: Maart 2001
  • Laatst online: 19-09 22:50
bedankt... ik bekijk wel nog eventjes hoe ik dit best kan aanpakken dan...

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Ik wacht lekker tot iemand met een nieuwe uitvinding komt, dan gaan we dat voor de gein inheritance noemen en dat zal dan héél makkelijk zijn.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1