撒拉嘿哟木头 2012-10-07 15:11 采纳率: 100%
浏览 972

这个错误在 PHP 中是什么意思?

What is this?

This is a number of answers about warnings, errors and notices you might encounter while programming PHP and have no clue how to fix. This is also a Community Wiki, so everyone is invited to participate in adding to and maintaining this list.

Why is this?

Questions like "Headers already sent" or "Calling a member of a non-object" pop up frequently on Stack Overflow. The root cause of those questions is always the same. So the answers to those questions typically repeat them and then show the OP which line to change in his/her particular case. These answers do not add any value to the site because they only apply to the OP's particular code. Other users having the same error can not easily read the solution out of it because they are too localized. That is sad, because once you understood the root cause, fixing the error is trivial. Hence, this list tries to explain the solution in a general way to apply.

What should I do here?

If your question has been marked as a duplicate of this, please find your error message below and apply the fix to your code. The answers usually contain further links to investigate in case it shouldn't be clear from the general answer alone.

If you want to contribute, please add your "favorite" error message, warning or notice, one per answer, a short description what it means (even if it is only highlighting terms to their manual page), a possible solution or debugging approach and a listing of existing Q&A that are of value. Also, feel free to improve any existing answers.

The List

Also see

转载于:https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php

  • 写回答

24条回答 默认 最新

  • 7*4 2012-10-07 15:11
    关注

    Fatal error: Call to a member function ... on a non-object

    Happens with code similar to xyz->method() where xyz is not an object and therefore that method can not be called.

    This is a fatal error which will stop the script (forward compatibility notice: It will become a catchable error starting with PHP 7).

    Most often this is a sign that the code has missing checks for error conditions. Validate that an object is actually an object before calling its methods.

    A typical example would be

    // ... some code using PDO
    $statement = $pdo->prepare('invalid query', ...);
    $statement->execute(...);
    

    In the example above, the query cannot be prepared and prepare() will assign false to $statement. Trying to call the execute() method will then result in the Fatal Error because false is a "non-object" because the value is a boolean.

    Figure out why your function returned a boolean instead of an object. For example, check the $pdo object for the last error that occurred. Details on how to debug this will depend on how errors are handled for the particular function/object/class in question.

    If even the ->prepare is failing then your $pdo database handle object didn't get passed into the current scope. Find where it got defined. Then pass it as a parameter, store it as property, or share it via the global scope.

    Another problem may be conditionally creating an object and then trying to call a method outside that conditional block. For example

    if ($someCondition) {
        $myObj = new MyObj();
    }
    // ...
    $myObj->someMethod();
    

    By attempting to execute the method outside the conditional block, your object may not be defined.

    Related Questions:

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog