Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

erreur fatale : Using $this when not in object context

5 réponses
Avatar
JPW
bonjour j'utilise un script qui n'est plus maintenu

et je viens de changer de serveur dédié
ce qui marchait sur l'ancien me donne l'erreur

Fatal error: Using $this when not in object context in
/home/volpassi/www/cartespostales/include/functions.inc.php on line 44

voici la portion de code :

function is_invalidate_email($email) {
//if(eregi("^[a-z0-9\._-]+@{1}([a-z0-9]{1,}[a-z0-9-]*[a-z0-9]{1,}\.{1})+([a-z]+\.){0,1}([a-z]+){1}$",trim($email)) ) if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$",trim($email)) ) { if ($this->check_banned_list) { if($this->is_banned_email($email)) { return true; } } return false; } return true;}je suis au minimum très mauvais en phpje ne sais pas ou chercherqui peut me mettre sur la voie ???mercijpw

5 réponses

Avatar
Florian Sinatra
*JPW* @ 19/10/2006 18:35 :
bonjour j'utilise un script qui n'est plus maintenu

et je viens de changer de serveur dédié
ce qui marchait sur l'ancien me donne l'erreur


Je doute très fort que tu aies le même code sur les deux serveurs.

Fatal error: Using $this when not in object context in

je suis au minimum très mauvais en php


Et en anglais ? Je te traduis : "Erreur fatale: Utilisation de $this
hors d'un contexte d'objet".

je ne sais pas ou chercher qui peut me mettre sur la voie ???


Tu as vraisemblablement dû copier un bout de code *dans* un objet pour
le coller *hors* d'un objet. Or, $this est la "variable" qui se réfère à
l'objet courant, et n'a rien à faire hors d'un objet.

Lis http://ch2.php.net/manual/fr/language.oop.php ;-)

Avatar
JPW
"Florian Sinatra" a écrit


Je doute très fort que tu aies le même code sur les deux serveurs.


ben si : j'ai copié les sites d'un serveur à l'autre par ftp

la différence c'est que sur le nouveau j'ai une version plus récente de php
php 5 au lieu de php4 et que la varible d'environnement globale est à off
et à on sur l'ancien serveur

je suis donc affirmatif le code est le même le problème vient d'ailleurs

jpw

Fatal error: Using $this when not in object context in
je suis au minimum très mauvais en php
Et en anglais ? Je te traduis : "Erreur fatale: Utilisation de $this

hors d'un contexte d'objet".

je ne sais pas ou chercher qui peut me mettre sur la voie ???


Tu as vraisemblablement dû copier un bout de code *dans* un objet pour
le coller *hors* d'un objet. Or, $this est la "variable" qui se réfère à
l'objet courant, et n'a rien à faire hors d'un objet.

Lis http://ch2.php.net/manual/fr/language.oop.php ;-)



Avatar
Florian Sinatra
*JPW* @ 20/10/2006 16:05 :
ben si : j'ai copié les sites d'un serveur à l'autre par ftp

je suis donc affirmatif le code est le même le problème vient d'ailleurs


D'accord. Et tu as vérifié à la ligne 44 ?

Avatar
JPW
"Florian Sinatra" a écrit dans le message de
news:
*JPW* @ 20/10/2006 16:05 :
ben si : j'ai copié les sites d'un serveur à l'autre par ftp

je suis donc affirmatif le code est le même le problème vient d'ailleurs


D'accord. Et tu as vérifié à la ligne 44 ?


ben si je savais quoi et comment vérifier je ne serais pas là

if ($this->check_banned_list)

y'a environ une demi douzaine d'include dans le script

jpw


Avatar
m-e-
"JPW" a écrit dans le message de news:

bonjour j'utilise un script qui n'est plus maintenu

et je viens de changer de serveur dédié
ce qui marchait sur l'ancien me donne l'erreur

Fatal error: Using $this when not in object context in
/home/volpassi/www/cartespostales/include/functions.inc.php on
line 44


La méthode en question doit être appelée quelque part de manière
statique :

<?php
LaClasse::is_invalidate_email($email);
?>

Or, l'utilisation de $this dans une méthode invoquée
statiquement était permis sous PHP 4 ($this étant alors
considéré comme n'importe quelle autre variable), mais plus sous
PHP 5.

Ainsi, pour régler le problème, tout en conservant le même
comportement que sous PHP 4, la connaissance de PHP et des
scripts en question seront nécessaires. Aussi, d'autres
problèmes du même type peuvent apparaître ailleurs rendant
éventuellement la tâche ardue.

Enfin, voici quelques esquisses de solutions possibles, même si
je doûte qu'elles puissent vous être utiles :

A- modifier le corps de la méthode, afin que dans le cas d'une
invocation statique $this ne soit pas utilisé, comme dans
l'exemple suivant :

<?php
class LaClass {
// ...
function is_invalidate_email($email) {
if (! isset($this)) {
return LaClass::static_is_invalidate_email($email);
}
// corps actuel de la méthode ...
}

// le mot clé "static" peut ne pas être employé pour
maintenir
// la compatibilité avec PHP 4
static function static_is_invalidate_email($email) {
// méthode "is_invalidate_email" épurée de ses "$this"
}
//...
}
?>

B- Modifier les appels de la méthode :

<?php
// l'appel :
LaClasse::is_invalidate_email($email);

// deviendrai :
$o = new LaClasse();
$o->is_invalidate_email($email);
?>

C- Ou encore une combinaison des deux précédentes solutions :

<?php
class LaClass {
// le mot clé "static" peut ne pas être employé pour
maintenir
// la compatibilité avec PHP 4
static function static_is_invalidate_email($email) {
// méthode "is_invalidate_email" épurée de ses "$this"
}
//...
}

// l'appel :
LaClasse::is_invalidate_email($email);

// deviendrai :
$o = new LaClasse();
$o->static_is_invalidate_email($email);

?>