Maison > développement back-end > tutoriel php > Résolution de l'erreur PHP : tentative d'appel d'une méthode non-objet

Résolution de l'erreur PHP : tentative d'appel d'une méthode non-objet

WBOY
Libérer: 2023-08-25 18:18:02
original
1305 Les gens l'ont consulté

Résolution de lerreur PHP : tentative dappel dune méthode non-objet

Solution à l'erreur PHP : tentative d'appel d'une méthode non-objet

Pendant le processus de développement utilisant PHP, nous rencontrons souvent des messages d'erreur, dont l'un est "essayer d'appeler une méthode non-objet". Cette erreur signifie que lorsque l’on tente d’appeler une méthode, l’objet utilisé n’est pas un objet légal. Cet article présentera quelques causes courantes et solutions pour vous aider à résoudre ce problème.

  1. Vérifiez si l'objet est correctement initialisé

Une raison courante est que nous n'avons pas initialisé correctement l'objet avant d'appeler la méthode. Par exemple, après avoir instancié une classe, on oublie d'utiliser le mot-clé « new » pour créer une instance de l'objet. Par conséquent, lors de l’appel de la méthode de l’objet, une erreur sera signalée.

Voici un exemple de code :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$example = Example;  // 错误的初始化方式,忘记了关键字“new”
$example->test();    // 报错:尝试调用非对象的方法
Copier après la connexion

Résoudre ce problème nécessite simplement d'ajouter le mot-clé "new" lors de l'instanciation de l'objet. Le code réparé est le suivant :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$example = new Example;  // 正确的初始化方式
$example->test();        // 正常输出:调用成功!
Copier après la connexion
  1. Vérifiez si l'objet est nul

Une autre raison courante est que nous n'effectuons pas de traitement nul sur l'objet avant d'appeler la méthode. Si nous essayons d'appeler une méthode sur un objet nul, une erreur sera signalée.

Voici un exemple de code :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$example = null;
$example->test();  // 报错:尝试调用非对象的方法
Copier après la connexion

Pour résoudre ce problème, il vous suffit d'ajouter une condition nulle avant d'appeler la méthode. Le code fixe ressemble à ceci :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$example = null;
if($example != null){
    $example->test();    // 不会报错,因为已经进行了判空处理
}
Copier après la connexion
  1. Vérifiez si l'objet est du bon type

Une autre situation est que lorsque nous essayons d'appeler une méthode, l'objet utilisé n'est pas du type attendu. Dans ce cas, nous utilisons généralement la vérification de type pour éviter cette erreur.

Voici un exemple de code :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$str = "Hello World";
$str->test();  // 报错:尝试调用非对象的方法
Copier après la connexion

Dans cet exemple, nous voulons en fait appeler la méthode de l'objet, mais nous utilisons une chaîne à la place. Pour résoudre ce problème, nous pouvons utiliser la vérification de type pour garantir que l’objet que nous utilisons est du type correct.

Pour résoudre ce problème, utilisez simplement la fonction is_object() pour effectuer une vérification de type. Le code réparé est le suivant :

class Example{
    public function test(){
        echo "调用成功!";
    }
}

$str = "Hello World";
if(is_object($str)){
    $str->test();    // 不会报错,因为已经进行了类型检查
}
Copier après la connexion

Résumé :

Lors du processus de développement PHP, lorsque nous rencontrons l'erreur "tentative d'appeler une méthode non-objet", nous pouvons d'abord vérifier si l'objet est correctement initialisé, s'il est null et est du type correct. L'adoption de solutions correspondantes en fonction de la situation spécifique peut résoudre efficacement ce problème. J'espère que cet article pourra vous aider à résoudre les problèmes courants liés aux rapports d'erreurs PHP et à améliorer l'efficacité du développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal