首页 > 解决方案 > 为什么我不能从类中的调用方法返回字符串?

问题描述

我只是在学习 PHP 并且有一个问题。

这是我创建的一个类

class keens{
public $userid, $codeq, $codetest, $qposition, $ans, $testid, $last, $keencode, $topicid, $datekeencomplete, $datenow;

function __construct() {
    $this->userid = $_SESSION['id'];
}

public function keencheck(){

    $sql="SELECT MAX(date) FROM `keencomplete` WHERE `topic_id`=$this->topicid";
    $run=mysqli_query(DBConnect::$conn, $sql) or die(mysqli_error());
    $row=mysqli_fetch_array($run);
    $this->datekeencomplete=new DateTime($row[0]);
    $this->datenow=new DateTime(null, new DateTimeZone('Asia/Almaty'));

    $interval=date_diff($this->datekeencomplete, $this->datenow);
    $result=$interval->format('%d');

    $check=is_string($result)? 'true':'false';

    echo $result;
    echo $check;
}

}

当我检查 $result 它显示它包含“2”并且它是一个字符串“2true”。

但是,当我尝试返回 $result 并在此代码中使用它时

    $interval=new keens();
    $interval->topicid=1;
    $interval->keencheck();

    echo $interval;

我收到以下错误:可恢复的致命错误:第 16 行的 C:\xampp\htdocs\Ikeen\views\v_tests.php 中的类热衷对象无法转换为字符串

print_r($interval) 显示如下,这不是我返回的,对吧?

keens Object ( [userid] => 48 [codeq] => [codetest] => [qposition] => [ans] => [testid] => [last] => [keencode] => [topicid] => 1 [datekeencomplete] => DateTime Object ( [date] => 2020-04-17 12:39:51.000000 [timezone_type] => 3 [timezone] => Europe/Berlin ) [datenow] => DateTime Object ( [date] => 2020-04-20 12:32:50.990006 [timezone_type] => 3 [timezone] => Asia/Almaty ) )

对不起,如果我做了一些愚蠢的事情。任何想法为什么我无法在类中获取函数的返回值?

标签: php

解决方案


1)你需要把

return $result;

keencheck()函数的末尾,以便它实际上返回一个值。现在它不返回任何东西。

2)您需要回显调用该函数返回的值。现在你正试图回显你的整个对象,它是keens类的一个实例。

$interval=new keens();
$interval->topicid = 1;
echo $interval->keencheck();

推荐阅读