【问题标题】:method_exists returning falsemethod_exists 返回 false
【发布时间】:2015-10-10 21:32:06
【问题描述】:

我是 php oop 的新手,所以请多多包涵...

我在一个名为区域的类中有一个方法,它没有返回结果,当我使用method_exists 时,它说它不存在。我看不出我做错了什么。

这是课程:

<?php
class SeniorMentor {
    public $regions;

    public function __toString() {

          $output = '';   
            $output .= $this->uid . "<br>";
            $output .= $this->fName . "<br>";
            $output .= $this->lName . "<br>";
            $output .= $this->email . "<br>";
            return $output;
    }

    public function regions() {
        $uid = 120;
        include 'classes/con.php';  
    $stmt = $conn->prepare('SELECT region, region_id FROM regions WHERE uid = :uid');
    $stmt->execute(array('uid' => $this->uid));

    while($row2 = $stmt->fetchAll(PDO::FETCH_KEY_PAIR)) {
     $regions = $row2;
     return $regions;
        }           
    }
} 

这是调用它的脚本:

<?php

include 'classes/con.php';
include 'classes/SeniorMentor.php';

$uid = 120;

$seniorMentor = new SeniorMentor;

echo $seniorMentor->regions($uid);

var_dump(method_exists($seniormentor,'regions'));

$sq = $conn->query("SELECT * FROM primary_profile", PDO::FETCH_INTO, $seniorMentor);

while($row = $sq->fetch()) {

    echo "$row <br/>";
}

?>

感谢观看

【问题讨论】:

    标签: php oop methods


    【解决方案1】:

    在 PHP 中,变量区分大小写。这意味着$seniorMentor$seniormentor 是两个完全不同的变量。

    var_dump(method_exists($seniormentor,'regions'));
    

    应该是:

    var_dump(method_exists($seniorMentor,'regions'));
    

    在大多数情况下,我建议坚持使用标准 naming convention 以避免此问题。最常见的两种是 Camel Case 和 Delimiter Case。

    例如:骆驼案$seniorMentor

    例如:分隔符大小写$senior_mentor

    【讨论】:

    • 感谢您了解...您知道为什么区域没有返回任何数据吗?我不确定这是否需要作为新问题重新提交...
    • 这个问题有很多可能性。我会考虑采取措施隔离问题。
    【解决方案2】:

    如果您是从 trait 调用它,请检查调用者类。

    【讨论】:

    • 谢谢T。这是很久以前的事了,我什至不记得我做了什么来解决它,但感谢您的建议
    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2015-08-02
    • 2012-05-17
    • 2013-10-26
    • 2013-01-06
    • 2011-01-24
    相关资源
    最近更新 更多