实例中的错误在哪里?

时间:2018-01-22 11:48:03

标签: php oop

在我询问问题之前,我会阅读建议的链接,但它对我没有帮助。

我的问题是当我尝试实例化一个时。

错误是:

  

注意:未定义的变量:userCore in   /Applications/MAMP/htdocs/proyecto_cice/app/web/controller/controllerFormUser.php   第74行

我知道这个通知的含义,所以我使用了函数class_exists(),我给了我真实的。我使用了这个功能,因为我的第一个想法是我在课堂上犯了一个错误,但这不是问题所在。

我在load.php文件中声明了这个对象,因为我在其他文件中也需要它。

我理解错误,但我找不到。如果你能提供帮助,我将不胜感激。

主文件中我尝试实例化类的代码:

<?php
require '../load.php';

function signup($form){
    if( $form['pass']== $form['repass'] ){

    $exists = $userCore->find_mail( filter_project_form() );

    if($exists==''){
        $isCorrect = ($userCore->insert_user( filter_project_form() ));
            if($isCorrect){echo 'correct';}
    }
    else{
        echo "The user exists now";
    }
  }
  else{
    echo 'The passwords must be identical';
  }
}
?>

文件&#39; load.php&#39;包含:

<?php
//CONFIG
require 'config.php';
require 'constants.php';

//CORE
require 'core/ddbb.php';
require 'core/user.php';
</code>
//CLASS MODEL
require 'model/class_user.php';

//CONTROLLER
require 'controller/controllerUser.php';

//INSTANCIA
$userCore = new User_core();

文件core / user.php是:

<?php
class User_core extends DDBB_core{
    function find_mail($form){
       $sql = "SELECT email FROM user WHERE email='".$form['mail']."'";
        return $this->executeSelectQuery($sql);
    }
}

由于

1 个答案:

答案 0 :(得分:1)

变量$userCore在您的函数中不可用,因为它在外部作用域中定义。你需要提供它:

[...] 

function signup($form){
    global $userCore;

    [...]

顺便说一句,做这样的事情被认为是不好的做法,这违背了OOP原则。如果你使siginup类成为UserCore类的方法,或者为此使用某种渲染实用程序类,那么你会更好地将UserCore的实例作为其中一个相反,函数的参数。