Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Provo a spiegarmi meglio:

    Io voglio accedere alle classi figlie dalla classe padre utilizzando i metodi settati nella classe figlia.
    p.s. io teoricamente non so quali sono le classi figlie.

    esempio:
    $cache = new CacheFile();
    $cache->CacheFileLang->store($arrayLingua); // nella classe CacheFileLang è definita la $cache_path = '/cache/language/'
    $cache->CacheFileDB->store($arrayFetchSQL); // nella classe CacheFileLang è definita la $cache_path = '/cache/db/'

    però il metodo store è presente solo nella classe padre, che ovviamente la classe figlia erediterà.
    Questo mi permette di aggiungere infinite classi per dati di store differenti e volendo anche cambiare totalmente l'architettura un domani (tipo fare lo store nel database):
    $cache->CacheSQLDB->store($arrayFetchSQL);

    senza modificare una riga di codice se non quella che inizializza la classe la prima volta.

    Ipotizzo che posso utilizzare __call, ma non mi faceva impazzire come idea, volevo trovare una soluzione differente, altrimenti mi metto l'anima in pace e faccio:

    Codice PHP:
    <?php
    namespace cache;

    class 
    CacheFile extends CacheBuilder implements ICacheFile {
       
       static private 
    $classes = [];
       
       public function 
    store($key$data$expiration 0) {
          
          
       }
       
       public function 
    buildFileName($cacheFile) {
          
          
       }
       
       public function 
    __call($name$arguments '') {
          return 
    self::$classes[$name]?: (self::$classes[$name] = new $name($arguments));
       }
       
       
    // ...
    }

    Anche se call non mi fa impazzire, così se mai vorrò cambiare metodo di caching dovrò modificare solo una righa di codice in futuro con la nuova classe aggiunta.

    Quindi teoricamente ho risolto, se avete soluzioni migliori fatemi sapere, grazie
    Ultima modifica di zacca94; 24-05-2016 a 10:10

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.