Autore Topic: Messaggio: Deprecated: Non-static method  (Letto 1082 volte)

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27927
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
Messaggio: Deprecated: Non-static method
« il: 29 Set 2016, 16:13:06 »
Con questa riga di codice nel file helper

Codice: [Seleziona]
if (!$appId) {
$_session = self::getmysession ();  <-- linea 72
$appId=$_session->get( 'datagrillappId');
}
Ottengo:

Deprecated: Non-static method datagrillHelper::getmysession() should not be called statically, assuming $this from incompatible context in ....../components/com_datagrill/helpers/datagrillhelper.php on line 72

Codice: [Seleziona]
public function getuserpermissions ()  {
$appId= datagrillhelper::retrieveID();    <-- linea 95
$possiblepermissions=parse_ini_file('xataface/permissions.ini');
$user = &JFactory::getUser();
foreach ($possiblepermissions as $permission=>$option) {
$asset='com_datagrill.application.'.(int) $appId;
$joomlapermission='datagrill.'.$permission;
if ($user->authorise($joomlapermission,$asset)){
$userpemissions[$permission]=1;
} else {
$userpemissions[$permission]=0;
}
}
return ($userpemissions);
}

Ottengo: Deprecated: Non-static method datagrillHelper::retrieveID() should not be called statically, assuming $this from incompatible context in ......../components/com_datagrill/helpers/datagrillhelper.php on line 95

In un altro file:

Codice: [Seleziona]
class conf_ApplicationDelegate {
   function getPermissions(&$record){
$perms= datagrillhelper::getuserpermissions(); <-- linea 4
return $perms;
   }
Ottengo: Deprecated: Non-static method datagrillHelper::getuserpermissions() should not be called statically, assuming $this from incompatible context in .........../components/com_datagrill/conf/ApplicationDelegate.php on line 4
Non riesco a trovare documentazione idonea a risolvere.
uso php V5.6.25

Chiedo anche se questo mi comporta il malfunzionamento della implementazione della aggiunta controllo ACL nel componente.

Grazie come sempre.
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.6 ed un Gestione Magazzino

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Messaggio: Deprecated: Non-static method
« Risposta #1 il: 29 Set 2016, 17:23:32 »
non so se dà problemi però non funziona sicuramente

 Non-static method datagrillHelper::getmysession() should not be called statically,
-------------------------------------------------------------------
vuol dire che puoi chiamare staticamente (::) solo metodi statici ovvero se vai a vedere la dichiarazione di getmysession sarà public function e non public static function.

Perchè sia corretto ti chiede che la classe datagrillHelper vada prima istanziata tipo $myhelper = newdatagrillHelper(); e poi $xxx = $myhelper->getmysession();
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27927
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
Re:Messaggio: Deprecated: Non-static method
« Risposta #2 il: 29 Set 2016, 17:34:34 »
Questa l'intera classe:
Codice: [Seleziona]
public function retrieveID ($dgsetup=null){

// first try: get the appId from the parameters passed to this function

$datagrillsetup=$dgsetup['_datagrillsetup'];
$appId=$datagrillsetup['appId'];

// next try : get the appId from Joomla's session cookie

if (!$appId) {
$_session = self::getmysession ();
$appId=$_session->get( 'datagrillappId');
}

// next try: get the appId from Xataface's  config table

if (!$appId) {
$app = Dataface_Application::getInstance();
$conf= $app->conf();
$datagrillsetup=$conf['_datagrillsetup'];
$appId=$datagrillsetup['appId'];
}


// if still no appId -> error
if (!$appId) {
die ('Error initialising application: could not determine ID');
}
return $appId;
}

dove apporto le modifiche?
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.6 ed un Gestione Magazzino

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Messaggio: Deprecated: Non-static method
« Risposta #3 il: 29 Set 2016, 17:56:38 »
quello è un metodo non statico di una classe che però non vedo...

$_session = self::getmysession ();
--------------------------------------------------
quel self è una scorciatoia quando sei all'interno della classe statica per poter usare la classe stessa... ma se non è statica o non contiene il metodo statico...
« Ultima modifica: 29 Set 2016, 18:33:14 da MariaElenaBoschi »
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

Offline tomtomeight

  • Global Moderator
  • Fuori controllo
  • ********
  • Post: 27927
  • Sesso: Maschio
  • Gli automatismi aiutano ma non insegnano nulla.
    • Mostra profilo
    • Xataface Italia
Re:Messaggio: Deprecated: Non-static method
« Risposta #4 il: 29 Set 2016, 19:01:12 »
Codice: [Seleziona]
public function getmysession () {
if (!isset($_mainframe)) {
$_mainframe = JFactory::getApplication('site');
$_mainframe->initialise();
}
$_session = JFactory::getSession();
return $_session;
}

e questo l'intero file allegato
NEWS DataGrill Xataface Installer (Ver. 1.0.1) per Joomla 3.6 ed un Gestione Magazzino

Offline MariaElenaBoschi

  • Appassionato
  • ***
  • Post: 469
    • Mostra profilo
Re:Messaggio: Deprecated: Non-static method
« Risposta #5 il: 29 Set 2016, 19:20:32 »
quindi la classe che sarebbe meglio fosse statica ma in realtà non lo è è datagrillHelper e il metodo è getmysession();

staticamente chiameresti $session = datagrillHelper::getmysession();

altrimenti devi avere la classe caricata (usi un framework che dovrebbe avere l'autoload), istanziata e usata

$data = new datagrillHelper();
$session = $data->getmysession();

o se fosse nell'oggetto

$session = $this->getmysession();


static, public, private protected sono attributi di funzioni e classi che non sono opzionali, pena instabilità
« Ultima modifica: 29 Set 2016, 19:23:32 da MariaElenaBoschi »
mancano 2 giorni alla mia prematura dipartita, saluti a tutti, meb.

 

Torna su