Cerchero' di impegnarmi:
Codice PHP:
class Elenco {
private $root;
public function __construct($path) {
$this->root = $path
}
public function getRoot() {
return $this->root;
}
}
$nome_cartella = 'foto-mare';
$elenco = new Elenco($nome_cartella);
echo $elenco->getRoot();
sorry ma non mastico granchè il php e seguo tutti i suggerimenti ma cmq. il codice non mi funziona... provo a pubblicare l'intero codice così forse è più chiaro... ( e grazie ancora dell'aiuto):
codice:<?php // nome della cartella associata $nomecartella=foto-mare; # Elenco è una classe statica ed auto-contenuta, che elenca i file # presenti in una directory, applicando loro una serie di regole per # assegnare tipi o nascondere file. define ('ELENCO_VERSION', '0.3'); // -- Inizializzazione e classe -- // error_reporting(E_ALL | E_STRICT); // mostra tutti gli errori Elenco::auto(); class Elenco { // $root è la directory da cui EN comincia a visualizzare file // E' possibile scendere in sottodirectory, ma non risalire oltre // la directory $root; il default è la directory corrente private static $root = '../../dcumenti/$nomecartella'; // $path è la sottodirectory di $root da visualizzare private static $path = ''; // $here è la directory in cui si trovano gli altri file di EN // (icone, template, configurazione) // La directory di default è elenco/, ma viene inizializzata // automaticamente chiamando ::init() private static $here = ''; // $files è l'array che contiente l'elenco dei file, una volta // riempita da ::listFiles() public static $files = array(); // $totals mantiene i totali relativi all'elenco dei file public static $totals = array( 'directories' => 0, 'files' => 0, 'bytes' => 0, ); // array di configurazione, per i singoli valori vedere default.ini public static $config = array( 'options' => array( 'directories-show' => true, 'directories-first' => true, 'directory-up' => true, 'sort-by' => false, 'sort-reverse' => false, 'template' => 'mobile' ), 'paths' => array( 'files' => '', 'url' => '../../documenti/$nomecartella/', 'icons' => '../icons/', 'get-param' => 'path', ), ); } ?>
Il problema come detto sopra è che non prende le variabili "$nomecartella"di linea 23 e 61.
Ultima modifica di pollat; 15-10-2015 a 16:00
Il problema, a questo punto, e' che non ti serve un aiuto, perche' mi sembra evidente che non hai la minima idea di come funzioni PHP, ma ti serve qualcuno che ti scriva il codice completo e finito.
che non conosco bene php l'ho già detto... per questo domando a chi ne sa più di me, e alcuni script riesco a modificarli da solo.
Il problema è che non so come inserire delle variabili all'interno di una classe e il codice sopra è quello che devo far funzionare.
Ho provato per giorni a fare svariate modifiche a quel codice ma non riesco a farlo funzionare... e probabilmente la soluzione non è così banale. Questo è il problema e per questo sto chiedendo il vostro aiuto.
Ultima modifica di pollat; 15-10-2015 a 16:30
Hai due possibilità:
- dargli qualche colpo con la chiave inglese, e sperare che riprenda a funzionare ( https://www.youtube.com/watch?v=dEkO...youtu.be&t=17s )
- Leggere la documentazione di php: http://php.net/manual/en/langref.php
Una cosa è provare a risolvere un problema cercando di capirlo, un'altra è modificare cose a caso nella speranza di beccare la combinazione giusta. Nel primo caso ti possiamo aiutare, nell'altro ti possiamo indicare la sezione in cui poter fare richieste.
Kurt, sono giorni che ci provo, leggendo e rileggendo la guida, ho provato a modificare quel codice in mille modi ma NON CI SONO RIUSCITO... non mi funziona... e ormai io ho perso qualsiasi speranza di farlo funzionare... praticamente ormai lo risogno la notte !!! Questo è il motivo per cui ho scritto il post e speravo che qualcuno risolvendo il problema mi facesse capire dove sbagliavo.
Ultima modifica di pollat; 15-10-2015 a 16:41
Il problema, come detto, e' che non puoi usare delle variabili nell'inizalizzazione di una proprieta' di classe. Non puoi con le virgolette singole, con quelle doppie, ne' con qualsiasi altro carattere. Il compilatore PHP richiede che i valori di inizializzazione siano definiti in fase di compilazione e non di esecuzione, quindi non si puo' fare.
Quello che puoi fare e' dichiarare la proprieta' vuota e darle valore all'interno di un metodo che dovrai chiamare, tipo:
e cosi' via per altri tipi di configurazione.Codice PHP:<?php
class Elenco {
private static $root;
/* .... */
public static function configura_root($nomecartella) {
self::$root = $nomecartella;
}
public static function stampa_root() {
echo self::$root;
}
}
Elenco::configura_root('foto-mare');
Elenco::stampa_root();
Detto questo, se una classe e' piena di "static" al 99% c'e' un problema di progettazione, perche' una classe con proprieta' statiche e metodi statici altro non e' che un modo diverso di scrivere funzioni e variabili globali, vanificando completamente tutti i concetti OOP, motivo per cui sopra ti avevo fatto un esempio leggermente diverso.