【问题标题】:Call to an undefined function [duplicate]调用未定义的函数[重复]
【发布时间】:2014-07-07 07:00:01
【问题描述】:

我目前正在开发一个应用程序,该应用程序从数据库中提取 JSON,然后将新用户添加到数组并将其作为 JSON 返回。当我尝试运行我的 addFriend() 函数时,我得到了“Call to undefined function userExists()”错误。我似乎无法弄清楚为什么。

public function userExists($user = null){
        if(is_numeric($user)){
            $test = $this->_db->get('members', array('ID', '=', $user));
            if($test->count()) {
                return true;
            }
        }
        return false;
}

public function addFriend($friend){
        if(is_numeric($friend)){
            if( userExists($friend) ){
                if(hasFriends()){
                    $friendsList = getFriends();
                    $friendsList[] = $friend;
                }else{
                    $friendsList = array($friend);
                }

            }
        }
        return false;
    }

我正在使用我创建的 PDO 类来调用查询并建立连接,这似乎工作正常。 count() 只返回 rowCount()。

我知道这将是我错过的一些小事,但我们将不胜感激!

【问题讨论】:

  • 使用$this 引用类中的另一个成员

标签: php json function class pdo


【解决方案1】:

如果你在班级里,替换

if( userExists($friend) ){

与

if( $this->userExists($friend) ){

基本上要引用类中的几乎所有内容,请将$this-> 附加到您正在调用的任何内容、属性、函数等。

它告诉类实际使用什么,即它自己的函数或它自己的属性。

关于这一点,我建议查看你的代码的其余部分,而不是使用变量,我建议创建和使用类的属性。

例如,您的addFriend 函数中有一个名为$friendsList 的变量。使用名为$friendList 的属性声明类可能会更好,如下所示:

class someThing{

public $friendlist;

// etc
}

然后在您的函数中,从该属性中追加或删除数据,如下所示:

        if( userExists($friend) ){
                $this->friendsList = getFriends();
                $this->friendsList[] = $friend;
            }else{
                $this->friendsList = array($friend);
            }

这样,一旦您分配了值,它们就在那里,可供任何其他调用或函数根据需要使用。

【讨论】:

  • 不要忘记 - hasFriends() 和 getFriends() 也需要做同样的事情
  • 捂脸的粗!我想是时候再来一杯咖啡了,谢谢你的帮助!
  • @Livewire 看看我添加的内容,我想你最好也改变一些类结构:)
  • @Fluffeh 所以我应该将朋友列表定义为一个类变量,这样类中的所有方法都可以访问它,而不必每次都查询数据库,好主意。我已经有了其中的一些,但这是一个让我的应用程序更整洁、更高效的好主意!我喜欢这个社区,因为我可以获得有助于我实践的反馈!
  • @Livewire 很高兴我们可以帮助您编写更好的代码伙伴 :)
猜你喜欢
  • 2016-11-13
  • 2013-12-17
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2013-05-12
相关资源
最近更新 更多