【问题标题】:Call a function from an another class从另一个类调用函数
【发布时间】:2016-04-06 08:47:09
【问题描述】:

我有一个名为“dbConnect”的类和另一个用于上传文件的类“uploadFiles”,我想从“uploadFiles”中的“dbConnect”调用一个函数:

数据库连接:

final class dbConnect {
// some codes and functions


public final function prepareStm($query){

        $this->query = $query;

        $insertDB = $connexion->prepare($this->query);          
} // end prepareStm()

// some other codes and functions

}

现在在上传文件中:

final class uploadFiles {
// some codes and functions


public final function scanFile() {

    $time_start = microtime(true);

    cl_engine(10000, 734003200, 734003200, 25, 0);

    ini_set('max_execution_time', 120);

    $retcode = cl_scanfile($this->fileTmp, $virusname);

    ini_restore('max_execution_time');

    $time_end = microtime(true);
    $timeTaken = $time_end - $time_start;

    $this->timeTaken    = $timeTaken;

        if ($retcode == CL_VIRUS) {
            return true;
                $this->aErrors[] = "File path : ".$this->fileTmp." Return code : ".cl_pretcode($retcode)." Virus found name : ".$virusname; 



// AND HERE I would like to call the "prepareStm" function from the dbConnect class to insert some information inside the database

} 

            return false;


} // end scanFile

// some other codes and functions

}

编辑: 这是一个简单的:

<?php

require_once 'classA.php';

final class classB {

 public $prop1 = "I'm a class property!";

    public function setProperty($newval)
    {
        $this->prop1 = $newval;
    }

    public function addProperty()
    {   
        $connect = new classA();
        $connect->getProperty();
        $res = $connect->getProperty();
    }
}

$obj = new classB;

echo $obj->addProperty();

?>

如何从名为“classA”的类中调用名为“functionA”的函数?

感谢您的支持

【问题讨论】:

  • $this-&gt;dbConnect() 有什么问题?
  • 没试过,不知道怎么调用别的类的函数
  • 对不起,我以为是同一个类的函数。它不是。请检查下面的答案。
  • @Oum Alaa,您可能希望为 dbConnection 使用单例,并将其构建为静态类。有关详细信息,请参阅this answer。您还可以查看 MeekroDB library 以获得简单、轻量级的数据库连接。它也可以防止 SQL 注入。
  • 我在 bindparams 之间使用 PDO 和准备和执行

标签: php function class pdo


【解决方案1】:

有两种方法可以从单独的类中调用函数。

第一个是将类实例化为对象并让该对象调用函数。

$db = new dbConnect();
$db->prepareStmt($sql);

如果您需要从 return 语句中获取结果,只需有一个与其相等的变量即可。

$res = $db->prepareStmt($sql);

第二种方法是从类本身静态调用函数。

dbConnect::prepareStmt($sql);

这两种方法都需要您包含该类。

include dbConnect.php;

【讨论】:

  • 我用一个简单的测试更新了我上面的问题,对吗?
  • 除非您要从另一个文件(希望是控制器)运行 B 类,否则您不需要将 B 类设为对象,但 addProperty 函数中的内容看起来是正确的。此外,您需要将 A 类包含到 B 类中,否则您将收到未定义的方法错误。您打算如何运行此代码?听起来值得您花时间阅读面向对象的编程。
  • 我将每个类放在单独的文件中
  • 干得好,很高兴我能帮上忙
【解决方案2】:

也许你可以这样写:

$connect = new dbConnect();
$connect->prepareStm($query);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多