Solving PHP error: Trying to call a non-object method

WBOY
Release: 2023-08-25 18:18:02
Original
1247 people have browsed it

Solving PHP error: Trying to call a non-object method

Solution to PHP error: Try to call a non-object method

In the process of using PHP development, we often encounter some error messages, one of which is "try Calling a method of a non-object". This error means that when we try to call a method, the object used is not a legal object. This article will introduce some common causes and solutions to help you solve this problem.

  1. Check whether the object is correctly initialized

A common reason is that we did not initialize the object correctly before calling the method. For example, after instantiating a class, we forget to use the keyword "new" to create an instance of the object. Therefore, when calling the object's method, an error will be reported.

Here is a sample code:

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

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

Fixing this problem simply requires adding the keyword "new" when instantiating the object. The repaired code is as follows:

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

$example = new Example;  // 正确的初始化方式
$example->test();        // 正常输出:调用成功!
Copy after login
  1. Check whether the object is null

Another common reason is that we do not null the object before calling the method deal with. If we try to call a method on an object that is null, an error will be reported.

The following is a sample code:

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

$example = null;
$example->test();  // 报错:尝试调用非对象的方法
Copy after login

To fix this problem, you only need to add a null condition before calling the method. The repaired code is as follows:

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

$example = null;
if($example != null){
    $example->test();    // 不会报错,因为已经进行了判空处理
}
Copy after login
  1. Check whether the object is of the correct type

Another situation is that when we try to call a method, the object used is not Not the type we expected. In this case, we usually use type checking to avoid this error.

The following is a sample code:

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

$str = "Hello World";
$str->test();  // 报错:尝试调用非对象的方法
Copy after login

In this example, we actually want to call the method of the object, but we use a string. To solve this problem, we can use type checking to ensure that the object we are using is of the correct type.

To fix this problem simply use the is_object() function to perform type checking. The repaired code is as follows:

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

$str = "Hello World";
if(is_object($str)){
    $str->test();    // 不会报错,因为已经进行了类型检查
}
Copy after login

Summary:

During the PHP development process, when we encounter the error "trying to call a non-object method", we can first check whether the object Initialized correctly, null, and of the correct type. Adopting corresponding solutions according to the specific situation can effectively solve this problem. I hope this article can help you solve common problems in PHP error reporting and improve development efficiency.

The above is the detailed content of Solving PHP error: Trying to call a non-object method. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!