php - 为什么我不能从类中的调用方法返回字符串?
问题描述
我只是在学习 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 ) )
对不起,如果我做了一些愚蠢的事情。任何想法为什么我无法在类中获取函数的返回值?
解决方案
1)你需要把
return $result;
在keencheck()
函数的末尾,以便它实际上返回一个值。现在它不返回任何东西。
2)您需要回显调用该函数返回的值。现在你正试图回显你的整个对象,它是keens
类的一个实例。
$interval=new keens();
$interval->topicid = 1;
echo $interval->keencheck();
推荐阅读
- python - 子进程管道仅在运行脚本时损坏
- r - 在ggplot2中绘制一个带网格的正方形
- amazon-web-services - 在 aws-amplify 与 Google 联合登录后检索用户的姓名和电子邮件
- scrapy - scrapy.exceptions.NotSupported:不支持的 URL 方案“”:该方案没有可用的处理程序
- email - 将发件人 Outlook 签名添加到使用 Excel 中的宏创建的电子邮件
- r - 将日期格式化为新的年/季度列
- python-3.x - Asyncio + Celery:分发任务
- java - 称为肥皂网络服务,它返回一个 zip 文件作为附件。如何在内存中解压?
- java - 对象 Web,访问作为参数类值传递的类
- javascript - ReactJS:如何获取已更改的表行的数据