Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Procedurale -> OOP

  1. #1

    Procedurale -> OOP

    Salve a tutti! Mi sto per accingere allo svecchiamento di questo codice procedurale i cui limiti e problemi purtroppo mi hanno portato all'esaurimento... E' l'ora di tecnologie giovani ( 1967 :\ ) più flessibili e meglio estendibili.

    Ora... vi vorrei illustrare la mia situazione, così da poter affrontare nel modo migliore questo cambiamento, alla luce delle vostre conoscenze ( le mie sono alquanto scarse... ho solo un pò di basi in java e qualche nozione che sto per ampliare ).

    Allora, si tratta di un portale in mysql con gestione di utenti e testi. Ora, alcune di queste funzionalità mi servirebbero anche incrociate, in quanto per esempio se dovessi prendermi il nome dell'autore di un testo, me lo prenderei tramite una funzione contenuta nel file delle funzioni per gli utenti... e così via.

    Avevo pensato di partire dalla trasformazione del file con le procedure del database, in una classe dedicata, e configurare le altre ( testi, utenti.. ) in modo da rappresentare delle estensioni di questa ( class utenti extends database.. ). Solo che non so se sia la cosa ottimale... praticamente tutte le funzioni hanno almeno una operazione da compiere nel database, e dovrei richiamarle tramite un parent::query() per esempio...

    Oppure potrei creare le classi in modo indipendente, e passare un riferimento alla classe database per ogni altra classe... del tipo

    $database = new database;
    $testi = new testi($database);

    e poi assegnare col costruttore quella classe come metodo della funzione testi.

    Altre idee non mi vengono... vorrei fare un lavoro decente, e partire col piede giusto. Cosa mi consigliate? Ci sono altri metodi più performanti?
    PaTeR
    From Ban to Life

  2. #2
    io per tutte le classi principali farei una pagina tipo classi.php
    e poi la richiamerei cosi:

    Codice PHP:
    include("classi.php"); 
    poi puoi utilizzare tutte le classi che hai creato.

    comunque ti consiglio la guida:
    http://php.html.it/guide/leggi/167/g...tti-con-php-5/
    e agli articoli:
    http://php.html.it/articoli/lista/16...amming-in-php/

  3. #3
    si... il fatto è che ogni classe in pratica deve usare le funzioni presenti sulla classe che gestisce il database...

    quindi come faccio?

    1) in ogni classe risalgo alla classe database tramite classe_database::funzione_database()
    2) ogni classe estende la classe del database, accedendone le funzioni tramite parent::funzione()
    3) non lo so...

    Volevo sapere se c'erano metodi più performanti.. O forse è proprio l'idea di base che è errata.. come potei gestire progettualmente questo sito?
    PaTeR
    From Ban to Life

  4. #4
    provare un un singleton?
    oppure utilizza un framework come CI è ottimizzi il tutto


    per completezza

    Codice PHP:
    class Database
    {
        
    // Store the single instance of Database
        
    private static $m_pInstance;

        private function 
    __construct() { ... }

        public static function 
    getInstance()
        {
            if (!
    self::$m_pInstance)
            {
                
    self::$m_pInstance = new Database();
            }

            return 
    self::$m_pInstance;
        }


  5. #5
    mmm preferirei evitare software di terzi... già uso smarty come template engine, non voglio facilizzare tutto XD

    Ok, fino a qualche giorno fa non avevo mai sentito parlare di design patterns, anche per la mia scarsa competenza con la oop. Trovare materiale esauriente è davvero dura... con google ho trovato a qualcosa ma l'unica cosa che mi è stata propinata in tutte le lingue del mondo è che i design patterns costituiscono "una soluzione progettuale generale a un problema ricorrente".

    Ora, al di là di questa formuletta, ho trovato ben poco materiale che mi mostri l'utilità pratica di questa "tecnica" o "insieme di tecniche".. In particolare ho capito che il singleton evita di far creare istanze multiple in memoria, diminuendo quindi la quantità di memoria richiesta.

    Ma mi chiedevo... questo a cosa mi serve se la classe in un foglio php la richiamo una sola volta?
    PaTeR
    From Ban to Life

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    il singleton evita di creare due istanze della stessa classe per errore.

    per le classi è chiaro che la classe database va inclusa sempre. però fai attenzione io per classe database intnedo una classe che accede al database, ed effettua le operazioni classiche di insert etc etc.

    per tutte le altre operazioni che non siano sul database usi altre classi
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Originariamente inviato da ciro78
    il singleton evita di creare due istanze della stessa classe per errore.

    per le classi è chiaro che la classe database va inclusa sempre. però fai attenzione io per classe database intnedo una classe che accede al database, ed effettua le operazioni classiche di insert etc etc.

    per tutte le altre operazioni che non siano sul database usi altre classi
    si, avevo pensato di strutturare la mia classe database in modo da connettersi automaticamente al db tramite il costruttore, e poi di disporre delle varie operazioni come metodi, includendone controlli etc etc...

    Ora, ovviamente questa classe dovrà sempre essere inclusa. E le altre classi dovranno esserne dipendenti... mi basterà estendere la classe principale?

    Ad esempio... ho una pagina che mi fa visualizzare un testo.

    Codice PHP:
    require_once("database.php");
    require_once(
    "testi.php"); 
    avendo in database.php una semplice classe come
    Codice PHP:
    class database {
    function 
    __construct() {
    mysqli_connect... etc etc
    }

    function 
    query($a) {
    return 
    mysqli_query($a);
    }

    //etc...

    ed in testi.php
    Codice PHP:
    class testi extends dabatase {
    public function 
    prendi_testo($id) {
    $asd parent::query("...");
    }
    //etc etc

    E così via...
    Ora... se però nella funzione prendi_testo mi servirebbe prendere un dato elemento riguardante l'autore del testo stesso... dovrei usare un metodo presente nella classe che gestisce le funzioni degli utenti... capisci?

    E' tutto interdipendente insomma.. come posso gestire una cosa del genere?
    PaTeR
    From Ban to Life

  8. #8
    in questo modo ogni classe che estende il database crea una nuova connessione al db.... :master:

  9. #9
    Originariamente inviato da paxal78
    in questo modo ogni classe che estende il database crea una nuova connessione al db.... :master:
    E quindi se rendessi singleton la classe database potrei ovviare al problema?

    Sarebbe questa la soluzione migliore?
    PaTeR
    From Ban to Life

  10. #10
    in questo modo hai un classe statica da richiamare in qualsiasi classe staticamente senza dover istanziare un oggetto da portare in giro...

    è una cosa che mi è venuta in mente così bisognerebbe fare qualche test...probabile che ci sono metodi migliori



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.