Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [php4>OOP] classe, sottoclasse, e contenitore per categoria ...

    Salve a tutti,
    da qualche giorno più che in passato mi sto esercitando con OOP, e in attesa che di passare al 5 sto cercando di scrivere una classe che operi in in questo modo...
    Prima di tutto, il codice che ho scritto:
    Codice PHP:
    <?php

    class test {
        var 
    $_nome$_cogn$_maid$_azid$_flag;

        
    // [Constructor function (php >=4)]
        
    function test$_nome$_cogn$_maid$_azid$_flag ) {
            
    $this->_nome $_nome;
            
    $this->_cogn $_cogn;
            
    $this->_maid $_maid;
            
    $this->_azid $_azid;
            
    $this->_flag intval$_flag );
        }
    }

    class 
    testExtended {
        var 
    $_nome$_cogn$_maid$_azid$_flag$_ext1$_ext2$_ext3;

        
    // [Constructor function (php >=4)]
        
    function testExtended$_nome$_cogn$_maid$_azid$_flag$_ext1$_ext2$_ext3 ) {
            
    $this->test$_nome$_cogn$_maid$_azid$_flag );
            
    $this->_ext1 $_ext1;
            
    $this->_ext2 $_ext2;
            
    $this->_ext3 $_ext3;
        }
    }

    class 
    testManage {
        var 
    $testContainer$Categ;
        
        function 
    testManage( &$dbResource$dbName ) {
            
    // formo testContainer e accodo le categorie
            
    $this->testContainer = array();
            if( 
    $this->dbName !== '' ) {
                
    mysql_select_db$this->dbName );
                
    $ris = &mysql_query'_____________QUERY_____________;' );
                if( 
    mysql_num_rows$ris ) > ) {
                    while( 
    $row = &mysql_fetch_row$ris ) ) {
                        
    $this->testContainer[] = $row[0] = array();
                    }
                    
    $this->testContainer['_inserted'] = array();
                }
            }
        }
        function 
    setTest(){
            
    // codice ??
        
    }
    }

    ?>
    Io ho una serie di oggetti test, poi ho altri oggetti testExtended con proprietà aggiuntive.
    Poi ho la classe testManage che tramite la funzione setTest() dovrebbe verificare quale dei due oggetti creare e in quale categoria inseirlo.

    In pratica, vorrei che il risultato finale fosse un array del tipo:
    Codice PHP:
    testContainer = array(

        [
    0] => 'categoria 1' = array(
            [
    'nome 1'] = testExtended Object,
            [
    'nome 2'] = testExtended Object,
            [
    'nome 3'] = testExtended Object
        
    )
        [
    1] => 'categoria 2' = array(
            [
    'nome 2'] = test Object,
            [
    'nome 4'] = testExtended Object
        
    )
        [
    2] => 'categoria 3' = array(
            [
    'nome 1'] = test Object,
            [
    'nome 5'] = testExtended Object
        
    )
        [
    3] => 'categoria 4' = array(
            [
    'nome 6'] = testExtended Object
        
    )

    ); 
    Quando inizializzo testContainer tramite la classe testManage $obj = new testManage();, tramite la query che ho scritto inserisco tutte le categorie nell'array; dopodicchè creo gli oggetti all'interno. Se il nome non è stato creato precedentemente vorrei creare un testExtended Object, in caso contrario un test Object.
    Per farlo pensavo di mettere nella function setTest() in qualche modo una referenza del nome in modo tale da poter effettuare controlli più facilmente: un qualcosa del tipo:
    Codice PHP:
    <?php

    testContainer 
    = array(

        [
    0] => 'categoria 1' = array(
            [
    'nome 1'] = testExtended Object,
            [
    'nome 2'] = testExtended Object,
            [
    'nome 3'] = testExtended Object
        
    )
        [
    1] => 'categoria 2' = array(
            [
    'nome 2'] = test Object,
            [
    'nome 4'] = testExtended Object
        
    )
        [
    2] => 'categoria 3' = array(
            [
    'nome 1'] = test Object,
            [
    'nome 5'] = testExtended Object
        
    )
        [
    3] => 'categoria 4' = array(
            [
    'nome 6'] = testExtended Object
        
    )
        [
    '_inserted'] = array(
            
    'nome 1',
            
    'nome 2',
            
    'nome 3',
            
    'nome 4',
            
    'nome 5',
            
    'nome 6'
        
    )

    );

    ?>
    Come scrivereste quella funzione? Oppure devo proprio gestire il tutto diversamente?
    わさび

  2. #2
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    up
    わさび

  3. #3

    ..........

    Ciao.
    Scusa ma tutti sti giretti
    a che pro

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Re: ..........

    Originariamente inviato da whisher
    Ciao.
    Scusa ma tutti sti giretti
    a che pro

    Dunque io ho due tipi di oggetti : uno che contiene poche informazioni, l'altro che ne contiene molte. Devo raggrupparli per categoria, ma potenzialmente uno stesso oggetto può stare in categorie diverse. Quindi siccome le informazioni dell'oggetto 2 (esteso) sono molte vengono scritte solo la prima volta che questo compare.
    Se controlli l'ultima parte del php, 'nome 1' compare nella categoria 1 e nella 3: la prima volta compare esteso, la seconda compare compare come oggetto semplice...
    わさび

  5. #5

    ..........

    Mah continuo a non capire lo scopo
    quando potresti risolvere overloading
    l'oggetto esteso ad ogni modo guarda
    se instanceof
    in PHP5 o is_a
    in PHP4.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Re: ..........

    Originariamente inviato da whisher
    Mah continuo a non capire lo scopo
    quando potresti risolvere overloading
    l'oggetto esteso ad ogni modo guarda
    se instanceof
    in PHP5 o is_a
    in PHP4.

    Grazie whisher,
    conosco is_a ma non ne capisco l'uso per quello che devo fare io nella classe.
    Returns TRUE if the object is of this class or has this class as one of its parents
    cioè capisco se un oggetto è stato creato con una classe...

    scusa ma non sono praticissimo di OOP, per sto cercando di capire esercitandomi creando le classi
    わさび

  7. #7
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    up
    わさび

  8. #8

    ..........

    Ciao.
    E' sempre meglio esercitarsi su casi concreti
    per esempio un astrazione di mysql o una
    classe per gestire i file o xml o array.
    In questo modo puoi affinare la tecnica
    penso sia inutile diventare matti su cose
    che non utilizzerai mai.
    Consiglio prenditi un tutorial procedurale
    e trasformalo in OOP.
    Su devshed di tutorials ce ne sono a bizzeffe.


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  9. #9
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    Re: ..........

    Originariamente inviato da whisher
    Ciao.
    E' sempre meglio esercitarsi su casi concreti
    per esempio un astrazione di mysql o una
    classe per gestire i file o xml o array.
    In questo modo puoi affinare la tecnica
    penso sia inutile diventare matti su cose
    che non utilizzerai mai.
    Consiglio prenditi un tutorial procedurale
    e trasformalo in OOP.
    Su devshed di tutorials ce ne sono a bizzeffe.


    Grazie 1000 per la segnalazione, cercherò di farne buon uso
    Cmq per questo problema in particolare, non è una cosa inventata per esercitarmi, ma è una cosa reale che devo risolvere e che stavo cercando di farlo con l'uso degli oggetti... perchè altrimenti potrei fare tutto con gli array ma come puoi immaginare da te diventerebbe un bel casino...
    わさび

  10. #10

    ...............

    $this->testContainer[] = $row[0] = array();
    qui con array in fondo cancelli l'array !

    $this->testContainer['_inserted'] = array();
    qui cosa ci metti dentro !

    &$dbResource
    qui passi una risorsa e non la utilizzi
    la connesione al Db dov'è !

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.