Joomla.it Forum
Non solo Joomla... => Sviluppo => : loryzizu 23 Jun 2014, 15:54:01
-
Salve a tutti, sto creando un modulo per la versione 2.5 di Joomla. Ho il seguente problema: sembra che il file helper non venga incluso nell'entry point del modulo.
Uso l'istruzione require_once( dirname(__FILE__).DS.'helper.php' );
[size=78%] per caricare il file helper.[/size]
Quando richiamo un metodo della classe definita nel file helper il server mi riporta un fatal error, che specifica che la classe non è stata trovata.
Eppure se non sbaglio, l'istruzione require dovrebbe interrompere lo script se il file non viene caricato, mentre lo script gira fin quando non richiamo la classe del file helper.
Qualcuno sà aiutarmi?
-
la classe non è stata trovata...mica il file..o sbaglio? ...il naming?
-
Sì, esatto, la classe, per questo la cosa mi risulta incomprensibile. Richiamo la classe così:
$resultAut=functionsProposta::autentication();
[/size][size=78%]Nel file helper la classe è definita:[/size]
[/size]
[/size]class functionsProposta{
public static function autentication(){
//some code...
}
}
-
Tanto che se copio e incollo manualmente la classe invece di richiamarla, tutto funziona. :o
-
..il naming?
-
Scusa l'ignoranza ma non capisco che intendi.
-
guarda joomla come chiama le classi, esiste un camel-case
usa require_once __DIR__ . '/helper.php';
usalo ovviamente nell'entry point
evita di usare nomi che potrebbero essere riservati tipo function/s
-
Ho rinominato classe e metodi di classe, ho provato pure a cambiare server, ma niente, sempre lo stesso problema.
-
forse fai prima a postare il codice, xche cosi sembra una cosa senza senso, non ci sono convenzioni o cose particolari sui moduli, la cosa piu scema che mi viene in mente e che fai il require dopo aver tentato di accedere alla classe ma non penso sia questo il tuo problema (lo spero :) :) :) )
-
Hai ragione, è una cosa che non mi spiego.
mod_prova1.php:
<?php
/**
Entry node
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Include the syndicate functions only once
require_once __DIR__ . '/helper.php';
if(modProva1::provaFunzione()){
echo "Funzione richiamata";
}
require( JModuleHelper::getLayoutPath( 'mod_prova1' ) );
?>
helper.php:
<?php/*
FILE HELPER
*/
class modProva1{
public static function provaFunzione(){
echo "Funzione richiamata con successo";
return true;
}
}
?>
Errore restituito dal server: Fatal error: Class 'modProva1' not found in C:\wamp\www\Joomla_2.5.19_ita-Stable\modules\mod_prova1\mod_prova1.php on line11
-
Prova a fare un echo __DIR__.'/helper.php';
Perche se hai una versione più vecchia del php 5.3 __DIR__ non esiste ma devi usare dirname(__FILE__)
Insomma il tuo problema è legato sicuramente all'ambiente di sviluppo, ho provato ad emulare quello che hai fatto e a me funziona tutto
------
Mi son reso conto ora che usi joomla 2.5 quindi prova a fare __DIR__.DS.'helper.php'
-
i backslash?
-
Niente, non funziona. Anche perchè ripeto che il require viene eseguito, altrimenti darebbe un errore relativo ad esso. Divento pazzo!
-
Nel file helper mancava l'istruzione:
defined('_JEXEC') or die('Restricted access');
Grazie a tutti quelli che hanno risposto.